backbone.js правильный способ обновить модель при изменении вида

Как правильно обновлять модель при изменении вида. Это нужно делать в виде или в каком-то другом месте, например, в контроллере или около того?

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

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

2 ответа

Решение

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

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

написанный @derick-bailey

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

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

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

  • View1.collection = [модель1];
  • View2.collection = [модель1, модель2, модель3];

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

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

Другие вопросы по тегам