knockout.js - ¿Cómo forzar la actualización de una vista sin que se active automáticamente desde un elemento observable?
(3)
Creé un JSFiddle con mi manejador de enlace no válido de bindHTML aquí: https://jsfiddle.net/glaivier/9859uq8t/
Primero, guarde el controlador de enlace en su propio archivo (o un archivo común) e inclúyalo después de Knockout.
Si usa esto, cambie sus enlaces a esto:
<div data-bind="bindHTML: htmlValue"></div>
OR
<!-- ko bindHTML: htmlValue --><!-- /ko -->
Nota: esto es principalmente para depurar y comprender KnockoutJS.
¿Hay alguna manera de solicitar explícitamente Knockout para actualizar la vista del modelo de vista (ya encuadernado)? Estoy buscando algo como:
ko.refreshView();
Entiendo que este no es un uso previsto de Knockout, pero aún quiero saber si existe dicho método para la depuración y el aprendizaje.
En algunas circunstancias, puede ser útil simplemente eliminar los enlaces y luego volver a aplicar:
ko.cleanNode(document.getElementById(element_id))
ko.applyBindings(viewModel, document.getElementById(element_id))
No puede llamar a algo en todo el modelo de vista, pero en un observable individual puede llamar a myObservable.valueHasMutated()
para notificar a los suscriptores que deben volver a evaluar. Esto generalmente no es necesario en KO, como mencionaste.