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