2013-03-24 105 views
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' 
    } 
    ] 
    }) 

我想添加事件在模型定义中的每个用户名称更改。 我不知道这样做,这对我来说似乎很难。

回答

0

看来你不能得到改变通过操纵骨干模式阵列成员事件的描述如下:

backbone-js-set-model-array-property

你最好的选择是设置整个数组,听一个change:users事件或甚至更好 - 提出了一个不同的模型,有一个Backbone集合的用户可以在操作时得到事件:

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'); 
+0

看来我必须重新定义json解析为复杂对象。 – sjbwylbs 2013-03-24 14:32:09