Backbone.js:获取集合后引发模型更改事件?
我有一个带有name属性的模型,该模型在属性更改时将调用绑定函数:Backbone.js:获取集合后引发模型更改事件?,backbone.js,Backbone.js,我有一个带有name属性的模型,该模型在属性更改时将调用绑定函数: var Workitem=Backbone.Model.extend({ 初始化:函数(){ this.bind('change:name',function()){ 警报(“名称”); } }); }, 默认值:{ 姓名:“姓名” } }); 如果我获取一个模型,这会起作用,并且在设置属性和获取数据时会触发更改事件 但是,我已经创建了一个集合,并且我希望在fetch方法期间为集合中的每个已获取模型触发事件: var Work
var Workitem=Backbone.Model.extend({
初始化:函数(){
this.bind('change:name',function()){
警报(“名称”);
}
});
},
默认值:{
姓名:“姓名”
}
});
如果我获取一个模型,这会起作用,并且在设置属性和获取数据时会触发更改事件
但是,我已经创建了一个集合,并且我希望在fetch方法期间为集合中的每个已获取模型触发事件:
var WorkitemList=Backbone.Collection.extend({
型号:Workitem,
});
var workitemsList=新的workitemsList();
workitemsList.fetch();
这可能吗?获取集合将用服务器响应替换集合中的模型。。它不会更新集合中您想要的每个模型。。最简单的修复方法是在集合中循环获取每个模型,但是您有多个对服务器的请求,并且错过了任何新添加的模型
我认为,要实现这一目标,您需要创建并获取收藏的另一个实例,然后将其中的模型与原始收藏进行比较,并根据需要进行更新。。不太漂亮。您可以覆盖集合的
fetch
-函数,分别对每个模型调用fetch。但这是非常野蛮的力量
fetch: function() {
for (var model: this.models) {
model.fetch();
}
}
任何人都有更好的方法来实现这一点吗?导入完成后,Fetch会触发集合上的“重置”事件。听一听,然后启动/搞乱模型。你为集合和模型设置了url吗,或者这些值只是从某处神奇地出现了吗?嗨,Jake,我使用的是backbone.localStorage.js,所以当我执行抓取时,数据是从HTML5本地存储读取的,但我认为这与我的问题无关。当我对单个模型(存储在localStorage中)执行相同操作时,将在获取后触发更改事件,但如果模型是集合项,则此操作不起作用Hi Lecstor,感谢您的回答。我正在尝试在fetch()方法之后循环到模型以执行您的解决方法,但这不起作用(警报返回的是零,而不是获取的项目数):
var WorkitemList=Backbone.Collection.extend({model:Workitem,initialize:function(){this.fetch({success:alert(this.length)});})代码>我认为应该更像var WorkitemList=Backbone.Collection.extend({model:Workitem,initialize:function(){this.fetch({success:function(Collection,response){alert(Collection.length)}};})代码>