2012-04-06 3 views
2

Что такое правильный способ обновления модели при изменении вида. Нужно ли это делать в представлении или в каком-то другом месте, таком как контроллер или так?backbone.js правильный способ обновления модели при изменении вида

например, у меня есть модель (model1) и некоторый вид (View1), связанный с этой моделью. Мне нужно обновить модель, когда я изменяю некоторые поля в представлении. Каков правильный способ сделать это?

Кроме того, у меня есть коллекция моделей, связанных с другим видом (View2), и мне нужно поместить модель (model1) в эту коллекцию. Второй вопрос - должен ли View1 или Model1 узнать о коллекции, и если да - как это должно быть сделано?

ответ

1

Существует интересный подход теории MVC, применительно к MVC ... Смотрите здесь для более объяснений что контроллер в Backbone

http://lostechies.com/derickbailey/2011/12/23/backbone-js-is-not-an-mvc-framework/

написано @ Дерик-подол

в общем итоге, Бейли говорят, что нет никаких контроллеров в Backbone. Поэтому я лично считаю, что каждое обновление модели должно происходить в представлении, связанном с этой моделью.

Каждая модель в макете, когда добавляется в коллекцию (или коллекции) и обновляется, запускает событие в коллекции (-ях), которой оно принадлежит, поэтому вы должны слушать это событие в своем представлении.

В вашем примере

  • View1.collection = [model1];
  • View2.collection = [model1, model2, model3];

И когда View1 изменяет модель1, тогда модель1 запускает событие в View2.collection, которое вы можете прослушивать.

+0

но таким образом некоторые несколько проблем возможны. Например, если вид подписан на Model.change, и я изменяю представление и после модели обновления, так что просмотр будет повторно отображаться еще раз - это, конечно, излишний – Ph0en1x

+0

Вот почему считается хорошей практикой уничтожить представление, если оно не видно, если это то, что вы имеете в виду. – drinchev

+0

@ ph0en1x вы никогда не должны оставлять viewd вокруг того, что вы не используете. Вы ухудшаете производительность своего приложения и можете вызывать события зомби! – tkone

0

контроллеров говорить с моделями, так что да: правильный способ обновить модель, когда вид изменен через ваш контроллер

+0

Но поскольку я понимаю, что контроллер в позвоночнике является частью ответственности, я прав? – Ph0en1x

Смежные вопросы