Backbone.js-名称更改时不触发更改

Backbone.js-名称更改时不触发更改,backbone.js,backbone-views,Backbone.js,Backbone Views,在我的主干函数中,当名称get change时,change函数根本不触发。。有人给我建议正确的方法吗。。(事实上我需要换东西,需要更新) 代码: (function($){ var list = {}; list.model = Backbone.Model.extend({ defaults:{ name:'need the name' }, initialize:function(){ this.bind('change:name', functio

在我的主干函数中,当名称get change时,change函数根本不触发。。有人给我建议正确的方法吗。。(事实上我需要换东西,需要更新)

代码:

    (function($){

var list = {};

list.model = Backbone.Model.extend({
  defaults:{
    name:'need the name'
  },
  initialize:function(){
    this.bind('change:name', function(model) {
        console.log('Model->change()', model);
    });
  }
});

list.collect = Backbone.Collection.extend({
  model:list.model,
  url : 'data/names.json',
  initialize:function(){
    this.fetch({update:true});
    this.keepUpdate();
  },
  keepUpdate:function(){
    var that = this;
    var updateData = function(){
      that.fetch({update:true});
      myTimeout = setTimeout(updateData,10000);
    }
    var myTimeout = setTimeout(updateData,10000);
  }
});


list.view = Backbone.View.extend({
  initialize:function(){
    this.collection = new list.collect();
    this.collection.on("update", this.render, this);
    this.collection.bind("change:name", function(model, attributes){
      console.log(model,attributes,'property changed'); // this is not triggering at all..
    });
  },
  render:function(data){
    _.each(this.collection.models, function(data){
      //console.log(data.get('name')); it works fine
    })
  },
  updateName:function(){
    console.log('updated called');
  }
});

var newView = new list.view();    

})(jQuery)

Collection.fetch不会触发
change
事件。您只会得到
reset
事件。如果需要更多的颗粒状事件,请考虑使用选项>代码> {Update:Trime}.P/>。
that.fetch({update:true});

这将为已在集合中的每个模型触发
change
事件,如果该模型以前不在集合中,则会触发
add

尝试从集合中删除keepUpdate,并在最后的视图初始化功能中设置一个setTimeout。我建议从视图中调用fetch以及这个.collection.fetch(),而不是集合的initialize函数。使您的代码更易于重用。

我不确定是否理解您的问题。你想达到什么目标

我不认为fetch接受
{add:true}
作为参数(我只是检查了源代码,它没有出现在任何地方)


fetch
完成时,它只触发
reset
事件(而不是
add
)。如果你想在收藏内容发生变化时做些什么,你应该听听这个。你也可以简化听
改变

不,我听不懂。。你能更新我的密码吗。。我很抱歉这么说。@3gwebtrain,我编辑了我的答案,使之更清晰一些(原始答案写在手机上)。但是不,非常抱歉,我不能为您更新代码。让我再次更新我的总函数。。我仍然没有被变更事件触发。@3gwebtrain,那是因为没有更新事件。。。如果你真的阅读了答案和相应的(链接的)文档,你可能会有更高的成功几率。请用正确的标题,总结问题。编辑你的标题。在那里提到你的问题。标题就是为了这个,而不是你为此付出的努力。请不要一次又一次地重复同样的问题。这是您今天第三次问同一个问题。如果您想增加曝光率,可以悬赏这个问题,但最明显的是提高问题的清晰度,特别是如果您正在寻找“清晰”的答案。我建议您花时间阅读收集文档。获取:。这是你第四次提出同一个问题,在每一个问题上,你都试图用不同的、不正确的方式来解决同一个问题。文档告诉您
fetch
方法接受哪些选项,以及触发哪些事件。