是的,我是 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方法的调用者函数正在改变它的范围。我需要保留它的范围。