0

私は以下のようにモデルを定義しています。

var A = Backbone.Model.extends({
    initialize: function(){
       this.on('change:users.name',this.onUserNameChanged)
    },
    onUserNameChanged: function(){ alert('name changed')
});
var a = new A ({
   id:1,
   name:'test',
   users:[
   {
      id:2,
      name:'u1'
   },
   {
      id:3,
      name:'u4'
   }
  ]
  })

モデル定義の各ユーザー名の変更にイベントを追加したい。私にはこれをする考えがありません。それは私には難しいようです。

4

1 に答える 1

0

ここで説明するように、Backboneモデルの配列メンバーを操作しても変更イベントを取得できないようです。

backbone-js-set-model-array-property

最善のオプションは、配列全体を設定してchange:usersイベントをリッスンするか、それ以上の方法です。操作時にイベントを取得するユーザー用のバックボーンコレクションを備えた別のモデルを考えてください。

var A = Backbone.Model.extend({
    initialize: function (options) {
        _.extend(this, options);
    }
});
var Users = Backbone.Collection.extend({
    initialize: function () {
        this.on('change:name', function () {
            alert('name changed');
        });
    }
});

var a = new A({
    id: 1,
    name: 'test',
    users: new Users([{
        id: 2,
        name: 'u1'
    }, {
        id: 3,
        name: 'u4'
    }])
});

a.users.get('2').set('name', 'u2');
于 2013-03-24T14:18:24.530 に答える