Привязать подмодель для просмотра в позвоночнике / марионетке
У меня есть модель User, которая имеет модель BankAccount, и у меня есть представление, для атрибута модели которого задана модель User, и в шаблоне этого представления я ссылаюсь на атрибут банковского счета:
<%= bankAccount.get('description') || 'No linked account' %>
Если я обновил банковский счет, то представление не обнаружит изменения:
user.get('bankAccount').set('description', 'foobar')
Я попытался добавить следующее в инициализации на модели User, но это тоже не сработало.
initialize: function() {
var self = this;
this.on('change:bankAccount', function() {
self.get('bankAccount').bind('change', function() {
self.trigger('change');
});
});
}
Какие-либо предложения? Кроме того, обе эти модели используют магистральный реляционный, если это помогает.
2 ответа
Ваше мнение подписаться на description
изменить событие в модели BankAccount и выполнить повторную визуализацию
UserView = Backbone.View.extend({
initialize: function() {
this.model.get('bankAccount').on('change:description', this.render, this);
}
});
Из Backbone-реляционных событий вы увидите, что вы можете привязать к update:<key>
и далее ниже есть пример (который я копирую / вставляю ниже) о том, как слушать изменения / обновления на HasMany
а также HasOne
связи
// Use the 'update' event to listen for changes on a HasOne relation
// (like 'Person.livesIn').
paul.bind( 'update:livesIn', function( model, attr ) {
console.debug( 'update to %o', attr );
});