バックボーンのドキュメントでは、 フェッチを使用してページの読み込み時にコレクションにデータを入力するべきではないと述べていることを知っています。その理由は次のとおりです。
var appCollection = Backbone.Collection.extend({
model:appModel,
url:'api/app',
initialize:function(){
this.fetch();
},
});
var homeView = Backbone.View.extend({
el:'#content',
initialize:function(){
this.collection = new appCollection(appModel)
this.render()
},
render: function () {
var that = this;
alert(1);
_.each(this.collection.models, function (item) {
that.renderApp(item);
}, this);
},
renderApp: function (item) {
var appview = new appView({
model: item
});
this.$el.append(appview.render().el);
}
})
var home = new homeView();
homeview.render 関数は、コレクションがフェッチされる前に実際に呼び出されるため、アラートを削除すると(1); アプリがレンダリングされず、「appname」(テンプレート) が定義されていないというエラーが表示されます。
これを行う方法はありますか?
fetch メソッドは非常に便利で、数秒間待つことを気にしません。実際には、他にもダウンロードするものがたくさんあるので、ページが初期化中であることを示すプログレス バーを表示するつもりでした。コレクションが実際にフェッチされると、コードは引き続き実行されますか???