で呼び出されるCollectionApp.listingList
があります。fetch()
add:true
App.listingList.fetch({
data: {some:data},
processData: true,
add: true
});
問題:既存のモデルのビューを再レンダリングせずに、新しく追加されたモデルのビューをレンダリングするにはどうすればよいですか。これは、私ができないことを意味します:
this.collection.each( function(listing, index) {
new ListingMarkerView({ model:listing }).render();
}, this);
試み #1
コレクションのadd
イベントでビューをレンダリングすると、新しいモデルにアクセスしてレンダリングする方法がわかりません
ListingListView = Backbone.View.extend({
initialize: function() {
this.collection.bind('add', this.renderNew, this);
},
render: function() {
console.log('render ListingListView');
this.collection.each( function(listing, index) {
new ListingMarkerView({ model:listing }).render();
}, this);
return this;
},
renderNew: function() {
// How do I grab the new models?
new ListingMarkerView({ model:listing }).render(); // wont work
return this;
}
});
試み #2
後続のfetch
on を実行し、underscore.js を使用して両方のコレクションのモデルを比較するために2 番目の Collection を使用しようとし_.without()
ましたが、返された配列には、パラメーターとして渡された 2 番目の配列で見つかった要素がまだ含まれています。Using_difference()
は、最初の配列として渡されたものと同じ配列も返しました。
App.listingListNew.fetch({
data: {some:data},
processData: true,
success: function() {
console.log(App.listingListNew.models);
console.log(App.listingList.models);
console.log(_.without(App.listingListNew.models, App.listingList.models));
console.log(_.difference(App.listingListNew.models, App.listingList.models));
}
});
console.log
出力
と に 2 つの同一の配列を渡したので_.difference()
、_.without()
出力は になります[]
。しかし、そうではありません :/cid
が異なるため、それらのすべてが一意として扱われるのでしょうか?