knockout.js - knockoutjs - Cómo forzar a un observable a leer el valor del elemento DOM
ko js value update (2)
Tengo una entrada oculta y vinculo el valor a una propiedad observable de mi modelo. Estoy usando otro complemento que actualiza internamente el valor de esa entrada oculta, sin embargo, el observable no actualiza su valor.
¿Cómo puedo forzar al observable a actualizar su valor desde el elemento?
algo así como valueHutMutated pero de otra manera.
Gracias
Funcionó agregando $("hiddenInputId").trigger("change");
para mi caso sin añadir un manejador de encuadernación ko.
Gracias !
Me doy cuenta de que ya has encontrado una solución.
Pero pensé que publicaría mi propio caso en caso de que alguien se tope con esto, ya que está arriba en los resultados de Google sin respuestas, por lo que podría ser útil para alguien.
ko.bindingHandlers.hiddenInputValue = {
init: function (element, valueAccessor) {
$(element).bind("change", function (event, data, formatted) { //hidden vars don''t usually have change events, so we trigger $myElement.trigger("change");
var value = valueAccessor();
value($(this).val()); //rather than $(this).val(), might be best to pass our custom info in data
});
},
update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
var value = valueAccessor();
$(element).val(value);
}
};
Y el html
<input type="hidden" name="myName" id="myId" data-bind="hiddenInputValue: myModelValue" >
Debido a que las entradas ocultas no tienen eventos de cambio normalmente, deberá activar su propio evento cada vez que cambie el valor, por ejemplo,
$("#myId").trigger("change");
No estoy seguro de si esta es la mejor solución, pero la mejor que podría encontrar en la escala de tiempo en la que estoy trabajando para :-) Podría poner algo en la wiki eliminatoria si se me ocurre algo más elegante.