Dado el siguiente fragmento:¿Por qué mi modelo Backbone hasChanged() siempre devuelve false?
var m = new Backbone.Model({
name: 'joshua'
});
m.set('name', 'something else');
Si ahora llamo m.hasChanged()
o m.hasChanged('name')
consigo false
. ¿Por qué? Según tengo entendido, ambos deben devolver true
.
m.changedAttributes()
también devuelve falso.
Aquí es un violín que ilustra lo que estoy haciendo, y esperando: http://jsfiddle.net/9cvVv/88/
EDIT: Parece que a menos que pase { silent: true; }
al método set()
entonces se genera el evento change
en su modelo que borra el changedAttributes()
, etc. Básicamente, estas propiedades solo rastrean los cambios desde la última vez que se activó el evento change
.
Lo leí en la documentación pero no lo entendí al principio.
Esto no me parece muy útil. Agradecería cualquier explicación de por qué esto funciona de la manera que lo hace y la mejor manera de lograr el resultado que quiero. (Que pasa alrededor de {silent: true; }
y renunciar a la utilización del evento change
parece un desperdicio.)
Ajá. Hice un método 'save()' para las colecciones que envían un lote de modelos y devoluciones. Me preguntaba por qué hasChanged() no pareció hacer nada. :-) ¡Gracias! – jmk2142
Esto ya no es cierto en las versiones más nuevas de Backbone; ver mi respuesta – pimlottc
Guardado mi día con backbone 0.9.2 ... – gor181