1

BankAccountモデルを持つUserモデルがあり、モデル属性がUserモデルに設定されているビューがあり、そのビューのテンプレートで銀行口座の属性を参照しています。

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

bankAccountを更新した場合、ビューは変更を認識しません。

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

助言がありますか?また、これらのモデルはどちらも、役立つ場合はバックボーンリレーショナルを使用します。

4

2 に答える 2

3

ビューdescriptionにBankAccountモデルの変更イベントをサブスクライブさせ、それ自体を再レンダリングします

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

バックボーン-リレーショナルイベントから、バインドできることがわかります。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 に答える