私のコードは実行されません:BACKBONE.JSルータの初期化は、次のようにすぐに
var AppRouter = Backbone.Router.extend({
_data: null,
_length: 0,
_index: null,
_todos: null,
_subtodolist: null,
_subtodos: null,
routes: {
"*action": "index",
"category/:name": "hashcategory"
},
initialize: function(options){
var self = this;
if (this._index === null){
$.ajax({
url: 'data/todolist.json',
dataType: 'json',
data: {},
success: function(data) {
self._data = data;
self._todos = new TodosCollection(data);
self._index = new CategoriesView({collection: self._todos});
//self._index.render();
}
});
return this;
}
return this;
},
index: function(){
this._index.render();
},
....
をしかし、私が始めるとき、放火犯のコンソールパネルは常にthis._index
がindex
機能がnullである私に語りました。 $.ajax success
コールバック関数の最後にself._index.render()
を使用してホームページをレンダリングする必要があります(上でコメントアウトしています)。 関数がinitialize
関数の前に実行されているようです。それはどうやって解決できますか?
ところで、routes
では、"": "index"
を使用しても動作しません。 "*action": "index"
を使用する必要があります。しかし、私はどこか別のところでは、デフォルトのURLが空の文字列に過ぎないことを学びました。なぜ私はここでそれを使うことができないのですか?
は、私が思う 'self._todos =新TodosCollection(データ);右、'; '' self._todos =新しいTodosCollection()すべきですか? – chaonextdoor
右折&修正。 –