コレクション内に 2 つの異なるモデルがあります。ビュー内でそれらにアクセスするにはどうすればよいですか? 質問は 2 つの部分に分かれています。質問が明確でない場合はお知らせください。
パート1
モデル1
Movie = Backbone.Model.extend({
initialize:function(){
console.log("The model 'Movie' initialized");
}
});
モデル 2
Songs = Backbone.Model.extend({
initialize:function(){
console.log("The model 'Songs' initialized");
}
});
これらのモデル用に作成されたインスタンスは、次のように配列としてコレクションに追加されます
var movie = new Movie({type:"movie",name:"Lord of the Rings",year:"2006"});
var songs = new Songs({type:"songs",name:"Rahna Thu", artist:"A R Rahman", album:"Delhi-6"});
var entertainment = new Backbone.Collection([movie,songs]);
では、ビュー内でこれらのモデルにアクセスするにはどうすればよいでしょうか? これらのモデルをロードしてテンプレートにバインドするには? 私が正しいかどうかはわかりませんが、私はこのようなことをしました
MainView = Backbone.View.extend({
collection:entertainment,
initialize:function(){
$.each(this.collection.toJSON(),function(i,item){
if(item.type=="songs"){
alert("Song: "+item.name+" Artist: "+item.artist+" Album: "+item.album);
}
});
}
});
var mainview = new MainView({el:$('body')});
アラートを正しく受け取っていますが、これが正しい方法であるかどうかを知る必要があります。
第二部
では、質問の 2 番目の部分です。これらのモデルに 'urlRoot' しかない場合はどうなるでしょうか? モデルをプリフェッチしてコレクションを埋めるにはどうすればよいですか?
つまり、私の2番目のシナリオでは、私のモデルは次のとおりです
Movie = Backbone.Model.extend({
urlRoot:"https://localhost:8080/entertainment/movies"
});
と
Songs = Backbone.Model.extend({
urlRoot:"https://localhost:8080/entertainment/songs"
});
では、これらのモデルをコレクションに追加して、ビュー内でアクセスするにはどうすればよいでしょうか?
実際の解決策は、ダッシュボード ページが読み込まれているときに、グリッド、チャート、その他のサーバー側データなどの複数のデータを読み込むことです。これらはすべてページの読み込み時に入力する必要があるため、次のような解決策を考えました。私はここで正しいことをしていますか?または、それを行うより良い方法はありますか?
質問がかなり長くなって申し訳ありませんが、ここで専門家のアドバイスをいただければ幸いです。