0

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

4

0 回答 0