Tengo una Colección App.listingList
donde se llaman fetch()
con add:true
.Backbone.js: Después de hacer Fetch(), renderizar solo los nuevos modelos
App.listingList.fetch({
data: {some:data},
processData: true,
add: true
});
Problema: ¿Cómo pueden los modelos recién añadidos que sus opiniones sean prestados, sin volver a prestar los puntos de vista de los modelos existentes. Esto significa que no puedo hacer:
this.collection.each(function(listing, index) {
new ListingMarkerView({ model:listing }).render();
}, this);
Intento # 1
representación de perspectiva sobre el caso de la colección add
, no puedo encontrar una manera de acceder a los nuevos modelos para hacer
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;
}
});
Intento # 2
Traté de tener una segunda Col Para ver el siguiente fetch
y comparar los modelos de ambas colecciones con underscore.js, _.without()
, pero la matriz devuelta todavía contiene los elementos encontrados en la segunda serie pasada como parámetro. El uso de _difference()
también devuelve la misma matriz pasada como la primera matriz.
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
salida
Desde pasé en 2 arrays idénticos en _.difference()
y _.without()
, la salida debe ser []
. Pero no es así:/Tal vez porque cid
es diferente, por lo que cada uno de ellos se tratan como únicos.