我试图让模型听取集合并在集合发生变化时自行获取:
class Team extends Backbone.Model
urlRoot: '/team',
initialize: function(attributes, options) {
this.listenTo(members, 'change', this.fetch)
fetch确实会触发,但是url都搞砸了,为了让它工作,我必须将它包装在一个匿名函数中:
this.listenTo(members, 'change', function() {this.fetch();})
有趣的是,当我添加一个"测试"对模型起作用并将this.fetch()放在其中,它可以工作:
this.listenTo(members, 'change', this.test)
test: function() {
this.fetch();
}
为什么我不能在this.fetch
内listenTo
进行操作?
答案 0 :(得分:2)
每种类型事件的处理程序都传递一组参数。 Catalog of Events可以说"change"
事件:
- 的"变更" (型号,选项) - 当模型的属性发生变化时。
所以,如果你这样说:
this.listenTo(members, 'change', this.fetch)
然后fetch
会像这样调用:
fetch(the_model_that_changed, some_options_object)
但Model#fetch
期望仅使用options
对象进行调用。结果是fetch
将在模型实例中查找options
,结果很混乱。