次のコードは、フェッチが完了する前に AccItemList コレクションの「リセット」イベントが発生しているように見せます。このためのコンソールへの出力は次のとおりです...
レンダリング
0
取ってきた
0
...そのため、コレクションにモデルが存在する前に「render」が呼び出されますが、これは明らかに間違っていますが、フェッチ成功のコールバックでも紛らわしいことに、コレクションにモデルがないようです。ルーター初期化子で AccItemList コレクションのインスタンス化も試みましたが、違いはありませんでした。私は何か基本的なことが欠けていると確信しています。助けてください、これは私を夢中にさせています!
$(function () {
var AccItem = Backbone.Model.extend({
defaults: {}
});
var AccItemList = Backbone.Collection.extend({
model: AccItem,
url: "/Dashboard/Accommodation",
parse: function (response) {
this.add(response.AccItems);
}
});
var AccListView = Backbone.View.extend({
el: $("#temp"),
initialize: function () {
_.bindAll(this, 'render', 'renderAccItem');
this.collection = new AccItemList();
this.collection.on('reset', this.render);
var that = this;
that.collection.fetch({
success: function () {
console.log("fetched");
console.log(that.collection.models.length);
}
});
},
render: function () {
var that = this;
console.log("rendering");
console.log(this.collection.models.length);
}
});
var App = Backbone.Router.extend({
routes: {
"": "index"
},
index: function () {
},
init: function () {
var accItemView = new AccListView();
}
});
var app = new App();
app.init();
});