2016-05-31 3 views
1

В настоящее время я работаю с разделом базового приложения, и мы стараемся отслеживать, какие элементы загружаются и какие атрибуты нам нужно показывать, в наша модель у нас есть то, что выглядит, как это при инициализации,прослушивание события изменения объекта в базовой модели

this.set('_loaded', {items: false, files: false, currentTab:"home"});

с приложением пользователь может нажать что-то, чтобы огонь метод, который будет работать что-то вроде этого,

this.model.set({ _loaded : {currentTab : $click.data('tab')} });

в представлении, как я могу слушать это изменение, чтобы реагировать на него? Я попытался следующие,

this.listenTo(this.model, 'change:_loaded.currentTab', this.switchView); 
this.listenTo(this.model.get('_loaded').currentTab, 'change', this.switchView); 

, но безрезультатно, что правильный способ изменения объекта в модели и реагировать на это изменение?

ответ

0

Backbone.DeepModel был построен для этой цели. Из репо:

Позволяет получить и установить вложенные атрибуты с синтаксисом пути, например, пользователь.

Триггеры меняют события на изменения вложенных атрибутов.

я соединял быстрый демонстрационный пример, который показывает, как установку вложенного атрибута и прослушивание вложенных изменений атрибутов: https://jsfiddle.net/83e4u420/

Установка вложенного атрибута: this.model.set('_loaded.currentTab', currentTab);

Listening для вложенных изменений атрибутов: this.listenTo(this.model, 'change:_loaded.currentTab', this.switchView);

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