我目前正在尝试编写一个只需在获取数据时运行函数的模型。就我而言,我正在以正确的方式实施它,但它反复无法以我期望的方式工作。
此时,模型看起来像这样:
var MyModel = Backbone.Model.extend({
// fetch the data for this, on return, create modela about it
url: function() {
return 'api.example.com/users/' + this.id + '/intialisation';
},
events: {
reset: alert('this works')
},
makeItems: function() {
var newItems, currentInitialiser, currentItem;
alert('this does not');
}
});
每当在此实例上调用fetch()
时,警报框会按预期弹出“this works”。但是,如果我将事件映射更改为
events: {
reset: "makeItems"
}
或
events: {
reset: this.makeItems
}
该功能未运行(您没有看到“这不起作用”警告框)。也许这是由于我对这个事件地图的工作方式的误解,但我很确定我已经看到这样的东西有效,我无法弄清楚为什么这不起作用。我查看了主干文档,但它们不是很具描述性,但据我所知,我写的内容应该有效。
希望这不会太难解决
非常感谢。
答案 0 :(得分:1)
通常,骨干视图中使用事件哈希,如骨干网documentation所支持。对于模型,您需要使用listenTo
创建一个侦听器。
var MyModel = Backbone.Model.extend({
// fetch the data for this, on return, create modela about it
url: function() {
return 'api.example.com/users/' + this.id + '/intialisation';
},
initialize: function() {
this.listenTo(this,'reset',this.makeItems);
},
makeItems: function() {
var newItems, currentInitialiser, currentItem;
alert('this does not');
}
});
这应该指向正确的方向。
编辑:另外,根据Backbone的文档,模型上的fetch
不会触发reset
。它会触发change
。 http://backbonejs.org/#Model-fetch