はい、私は JS と backbonejs が初めてです。
今すぐ問題を掘り下げましょう。
backbonejs Controllerで非常に奇妙な動作をしています。
これが私のコントローラーのコードです
var controller = Backbone.Controller.extend( {
_index: null,
routes: {
"": "index"
},
initialize: function(options){
var self = this;
if (this._index === null){
$.getJSON('data/album1.json',function(data) {
//this line is working self._index is being set
self._index = new sphinx.views.IndexView({model: self._photos});
});
Backbone.history.loadUrl();
}
},
index: function() {
//this line is not working
//here THIS is pointing to a different object
//rather than it was available through THIS in initialize method
this._index.render();
}
});
コントローラーを開始するためのファイルの最後にある行を次に示します。
removeFallbacks();
gallery = new controller;
Backbone.history.start();
今、私は何かが欠けています。しかし、何??? これが間違っている場合、正しい方法は何ですか?? indexメソッドのinitializeメソッドから設定したプロパティにアクセスする必要があります。
indexメソッドの呼び出し元関数がスコープを変更しているようです。その範囲を維持する必要があります。