我想知道为什么尝试呈现索引函数会给我一个cannot call method render of null
错误。有没有办法让索引函数等待渲染,直到路由器的初始化完成。console.logs 似乎表明索引函数正在尝试在初始化中的 ajax 调用完成之前呈现
1.Uncaught TypeError: Cannot call method 'render' of null gallery.js:231
2. XHR finished loading: "http://localhost:3000/readjsonfile". jquery.js:8241
3.success
这是代码。我有路线
var Gallery = Backbone.Router.extend({
routes: {
"": "index",
},
它最初设置为 null
_index: null,
Gallery 路由器的初始化检查索引是否为空,如果是,则使用数据创建一个新视图。
initialize: function(options) {
var ws = this;
if (this._index === null){
$.ajax({
url: 'galleries',
dataType: 'json',
data: {},
success: function(data) {
console.log("success");
console.log(data);
ws._data = data;
ws._photos = new PhotoCollection(data);
ws._index = new IndexView({model: ws._photos});
console.log(ws._index);
Backbone.history.loadUrl();
},
error: function(r){
console.log("error");
console.log(r);
}
});
return this;
}
return this;
},
这是在初始化之后立即放置的索引函数,它呈现在上面的初始化中创建的视图,但是,我得到了一个Cannot call method 'render' of null
错误
index: function() {
this._index.render();
},