it-swarm-pt.tech

Como forçar uma atualização de exibição sem que ela seja disparada automaticamente de um observável?

Nota: isto é principalmente para depurar e entender o KnockoutJS.

Existe uma maneira de solicitar explicitamente o Knockout para atualizar a exibição do modelo de exibição (já vinculado)? Eu estou procurando por algo como:

ko.refreshView();

Entendo que este não é um uso intencional do Knockout, mas ainda quero saber se existe um método para depuração e fins de aprendizado.

145
THX-1138

Você não pode chamar algo em todo o viewModel, mas em um indivíduo observável você pode chamar myObservable.valueHasMutated() para notificar os assinantes que eles devem reavaliar. Isso geralmente não é necessário no KO, como você mencionou.

244
RP Niemeyer

Em algumas circunstâncias, pode ser útil simplesmente remover as ligações e, em seguida, reaplicar:

ko.cleanNode(document.getElementById(element_id))
ko.applyBindings(viewModel, document.getElementById(element_id))
24
ProfNimrod

Eu criei um JSFiddle com o meu manipulador de ligação knockout bindHTML aqui: https://jsfiddle.net/glaivier/9859uq8t/

Primeiro, salve o manipulador de ligação em seu próprio arquivo (ou um arquivo comum) e inclua após o Knockout.

Se você usar isso, mude suas ligações para isto:

<div data-bind="bindHTML: htmlValue"></div>

OR

<!-- ko bindHTML: htmlValue --><!-- /ko -->
0
James 'Fluffy' Burton