2013-03-24 25 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