我正在尝试为这样的骨干模型指定一个函数 url:
var Directory = Backbone.Model.extend({
defaults: {
path: '/',
entries: new DirectoryEntries
},
initialize: function() {
this.listenTo(this, 'change:path', this.fetch);
this.fetch();
},
parse: function(response, options) {
if (response != null) {
for (var i = 0; i < response.length; ++i) {
this.get('entries').add(new DirectoryEntry(response[i]));
}
}
this.trigger('change');
},
url: function() {
return '/svn-ls.php?path=' + this.get('path');
},
在我的初始化函数中对 fetch() 的初始调用似乎工作正常,但是当在路径更改时调用 fetch 时,主干会尝试发出以下 JSON 请求:http://localhost:8000/function%20()%20%7B%20%20%20%20%20%20return%20'/svn-ls.php?path='%20+%20this.get('path');%20%20%20%20}
即,它似乎试图使用 this.url 而不是实际调用它。
有人知道这里有什么问题吗?
编辑:我将listenTo
调用更改为以下内容:
var self = this;
this.listenTo(this, 'change:path', function() { self.fetch(); });
现在一切似乎都正常了。不过,我不知道为什么绑定 this.fetch 会直接搞砸。