我正在尝试为骨干模型指定一个函数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时,backbone会尝试发出以下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直接搞砸了。