在backbone.js中指定url函数

时间:2013-03-11 16:44:34

标签: javascript backbone.js

我正在尝试为骨干模型指定一个函数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直接搞砸了。

0 个答案:

没有答案