2013-10-15 2 views
0

У меня есть представление, которое должно отображать одну модель. Нажимая ссылки, пользователь может выбрать, какая модель отображается. Когда это произойдет, и выбранная модель отобразится, как мне показать, что просмотр переключается на другую модель? Я вижу три возможных варианта.Магистраль: как заменить одну модель на другую?

  1. Каким-то образом переустановите представление на новую модель и обновите ее.
  2. Переустановите объект модели - установите идентификатор недавно выбранной модели и введите fetch(), надеясь, что он будет волшебным образом обновляться в представлении.
  3. Удалите вид, затем заново создайте его с новой моделью (когда она закончит выборку).

Первый подход чувствует, как «правый» один, но я не могу найти простой способ сделать это (установка model легко, но все события должны быть отскок на вид автоматически обновлять себя) , Второй кажется странным, может быть подвержен конфликтам (что происходит, если есть два объекта для моделей с одинаковым идентификатором?) И может вообще не работать. Третий кажется слишком громоздким. И что же мне делать?

ответ

0

Вы можете рассмотреть возможность использования библиотеки ModelBinder для Backbone: https://github.com/theironcook/Backbone.ModelBinder

У вас есть два возможных пути освежающий вид. Вы либо привязываете модель к виду один раз, а затем всегда обновляете свойства в модели позже. Эти способы, когда изменяется атрибут Model, ModelBinder автоматически обновит View.

Другим решением было бы отвязать модель от представления и переустановить ее на другую модель.

Это может дать вам о себе знать: http://jsfiddle.net/dazqS/ В представлении есть функция refreshModel, которая отвязывает старый модуль и перепроверяет новое.

refreshModel: function(model){ 
    this._modelBinder.unbind(); 
    this.model = model; 
    this._modelBinder.bind(this.model, this.el); 
} 
Смежные вопросы