Respuesta

11

Usted podría utilizar model.bind('change',function() {/*...*/}) y en el uso de la función hasChanged para comprobar los atributos: if(model.hasChanged('propIWantToExclude')) return;

+0

¿Alguien puede responder a la primera parte de la pregunta? es decir. ¿Cómo disparar un evento de cambio cada vez que cambio cualquier propiedad del modelo, a excepción de uno? –

+0

^simplemente use el "cambio" como en la respuesta ... aunque veo que fue editado, por lo que probablemente haya preguntado antes de editar :) – gthmb

0

accede a la solicitud de David Tuite responder a la primera parte de la pregunta, se puede configurar una función de responda al evento "modificado" y luego active un evento personalizado si la propiedad que desea ignorar no fue modificada.

Esta lógica activaría el evento personalizado: 'somePropertyOtherThanThePropIWantToExcludeChanged' si la propiedad no se modificó. Si hay varias propiedades se han cambiado, incluyendo el que desea ignorar, entonces el evento personalizado que también se dispara: Respuesta

model.bind('change', function(){ 
    if(!model.hasChanged('propIWantToExclude')){ 
     model.trigger('somePropertyOtherThanThePropIWantToExcludeChanged'); 
    } 
}); 
3

de Justin anterior devolverá cuando 'propIWantToExclude' y algunos otros atributos se cambian juntos. Es probable que no quiere hacer eso, por lo que también debe mirar el tamaño de model.changedAttributes:

if(model.changedAttributes.length == 1 && model.hasChanged('attrIWantToExclude')) { 
    return; 
} 
+0

Debe ser: "model.hasChanged ('attrIWantToExclude') && Object.keys (model.changedAttributes()). length == 1 ". O "Object.keys (model.changed) .length == 1 && ...". changedAttributes es una función y devuelve un hash de objetos cambiados o falso si no hay ninguno. hash.length no funciona, por lo que necesita algo como esto: Object.keys (hash) .length. falso puede ser devuelto por los errores changedAttributes y Object.keys (false), por lo que necesita una prueba hasChanged antes de la referencia Object.keys en changedAttributes (o bien referencia interna del modelo.changed). - http://backbonejs.org/#Model-changedAttributes –

Cuestiones relacionadas