Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 如何收听数组子模型';s值变化_Backbone.js_Backbone Events - Fatal编程技术网

Backbone.js 如何收听数组子模型';s值变化

Backbone.js 如何收听数组子模型';s值变化,backbone.js,backbone-events,Backbone.js,Backbone Events,我有一个模型定义如下 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:

我有一个模型定义如下

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'
   }
  ]
  })
我想在模型定义中的每个用户名更改上添加事件。
我不知道该怎么做。这对我来说似乎很难。

您似乎无法通过操纵主干模型数组成员来获取更改事件,如下所述:

您最好的选择是设置整个阵列并收听
更改:用户
事件,或者更好-为用户提供一个不同的模型,该模型有一个主干集合,用户在操作时将获得事件:

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

看来我必须将json解析重新定义为复杂对象。