Estoy construyendo una IU de permisos, tengo una lista de permisos con una lista de selección al lado de cada permiso. Los permisos están representados por un conjunto observable de los objetos que se une a una lista de selección:change event on select with knockout binding, ¿cómo puedo saber si es un cambio real
<div data-bind="foreach: permissions">
<div class="permission_row">
<span data-bind="text: name"></span>
<select data-bind="value: level, event:{ change: $parent.permissionChanged}">
<option value="0"></option>
<option value="1">R</option>
<option value="2">RW</option>
</select>
</div>
</div>
Ahora el problema es el siguiente: el evento de cambio se elevó cuando la interfaz de usuario está simplemente poblando por primera vez. Llamo a mi función ajax, obtengo la lista de permisos y luego el evento se genera para cada uno de los elementos de permiso. Este no es realmente el comportamiento que quiero. Quiero que se eleve solo cuando un usuario realmente selecciona un nuevo valor para el permiso en la lista de selección, ¿cómo puedo hacer eso?
después de 2 horas de cavar la causa que mi formulario desencadene el evento de "cambio" después de cargar la página, supongo que me salvó. –
Su respuesta me dio una idea ... cambié a propósito el tipo procedente de la url, por lo que mi función de suscripción se activaría en la carga de la página (quería que procesara una URL var, no solo cuando mi menú desplegable desencadenó un cambio). ¿Hay una forma menos hacky de hacer esto? – Jiffy