Tengo una casilla de verificación vinculada a un observable en un modelo de vista. Tengo un requisito para, esencialmente, mostrar un "¿Estás seguro?" confirmación de confirmación si el usuario lo cambia de verdadero a falso. Me está costando tiempo calcular el mejor lugar para hacer que el cambio sea "cancelable". . .Knockout - ¿Cancelar un evento de cambio?
1) jQuery manejador del evento click 2) modelo de vista interno subscribe "beforeChange" 3) modelo de vista interno suscribirse (normal)
En cualquier caso, había mucho prefieren tener la oportunidad de cancelar el cambio directamente que reacciona al cambio, potencialmente revertiéndolo a su valor anterior si es necesario.
¿El evento de suscripción de Knockout le da la oportunidad de cancelar un cambio? Cualquier idea sería apreciada. ¡Gracias!
Oh, Dios mío! Eso es fantásticamente útil. Nunca supe sobre stopImmediatePropagation() de jQuery. Aunque generalmente trato de evitar hacer referencia a cosas de jQuery fuera del núcleo de ViewModel, esta es una gran solución para mi problema. ¡Gracias de nuevo! – blaster
En mi caso, 'event.stopImmediatePropagation' no detuvo el cambio del valor en ko viewModel. Tuve que volver a establecer el valor: 'var cb = event.target; ... data.myvalue (! cb.checked); ' – Sprockincat
El orden del enlace de datos es * muy * importante en este caso. Si vincula el valor * antes * del evento, el enlace de valor se ejecuta primero. Si el evento está vinculado, se ejecutará primero y detendrá la propagación. Vea este violín para verlo roto: http://jsfiddle.net/8AuVj/ –