绑定子模型以在骨干/木偶中查看

Bind sub-model to view in backbone / marionette

本文关键字:模型 绑定      更新时间:2023-09-26

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

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

如果我更新了银行账户,视图不会发现更改:

user.get('bankAccount').set('description', 'foobar')

我尝试在用户模型的初始化中添加以下内容,但它也没有工作。

initialize: function() {
  var self = this;
  this.on('change:bankAccount', function() {
    self.get('bankAccount').bind('change', function() {
      self.trigger('change');
    });
  });
}

有什么建议吗?此外,如果有帮助的话,这两种模型都使用主干关系。

让你的视图订阅银行账户模型上的description更改事件并重新呈现自身

UserView = Backbone.View.extend({
  initialize: function() {
    this.model.get('bankAccount').on('change:description', this.render, this);
  }
});

从主干关系事件中,您将看到您可以绑定到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 );
});