Hinweis: Dies dient hauptsächlich zum Debuggen und Verstehen von KnockoutJS.
Gibt es eine Möglichkeit, Knockout explizit aufzufordern, die Ansicht aus dem (bereits gebundenen) Ansichtsmodell zu aktualisieren? Ich suche etwas wie:
ko.refreshView();
Ich verstehe, dass dies keine beabsichtigte Verwendung von Knockout ist, möchte aber dennoch wissen, ob es eine solche Methode zum Debuggen und Lernen gibt.
Sie können nicht für das gesamte viewModel etwas aufrufen, aber für ein einzelnes Observable können Sie myObservable.valueHasMutated()
aufrufen, um die Abonnenten zu benachrichtigen, dass sie neu bewerten sollen. Dies ist in der Regel in KO nicht erforderlich, wie Sie bereits erwähnt haben.
Unter bestimmten Umständen kann es nützlich sein, die Bindungen einfach zu entfernen und dann erneut anzuwenden:
ko.cleanNode(document.getElementById(element_id))
ko.applyBindings(viewModel, document.getElementById(element_id))
Ich habe mit meinem bindHTML-Knockout-Bindungshandler hier eine JSFiddle erstellt: https://jsfiddle.net/glaivier/9859uq8t/
Speichern Sie zuerst den Bindungshandler in einer eigenen (oder einer allgemeinen) Datei und fügen Sie ihn nach Knockout ein.
Wenn Sie dies verwenden, ändern Sie Ihre Bindungen zu diesem:
<div data-bind="bindHTML: htmlValue"></div>
OR
<!-- ko bindHTML: htmlValue --><!-- /ko -->