1

我有一个具有 BankAccount 模型的 User 模型,并且我查看了谁的模型属性设置为 User 模型,并且在该视图的模板中我引用了银行帐户的属性:

<%= bankAccount.get('description') || 'No linked account' %>

如果我更新了 bankAccount,则视图不会接受更改:

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');
    });
  });
}

有什么建议么?此外,如果有帮助,这两个模型都使用骨干关系。

4

2 回答 2

3

让您的视图订阅descriptionBankAccount 模型上的更改事件并重新呈现自己

UserView = Backbone.View.extend({
  initialize: function() {
    this.model.get('bankAccount').on('change:description', this.render, this);
  }
});
于 2012-08-08T21:07:50.830 回答
1

Backbone-relational Events你会看到你可以绑定到update:<key>下面有一个例子(我在下面复制/粘贴)关于如何监听变化/更新HasManyHasOne关系

// 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 );
});
于 2012-08-09T00:28:22.863 回答