옵저버 블에서 자동으로 트리거하지 않고 뷰 새로 고침을 수행하는 방법은 무엇입니까? 것입니다. (이미 바운드 된) 뷰 모델에서

참고 : 이것은 대부분 KnockoutJS를 디버깅하고 이해하기위한 것입니다.

(이미 바운드 된) 뷰 모델에서 뷰를 새로 고치도록 Knockout을 명시 적으로 요청하는 방법이 있습니까? 나는 다음과 같은 것을 찾고있다 :

ko.refreshView();

나는 이것이 녹아웃을 의도 한 것이 아니라는 것을 이해하지만 디버깅 및 학습 목적으로 그러한 방법이 있는지 알고 싶습니다.



답변

전체 viewModel에서 무언가를 호출 할 수는 없지만 관찰 가능한 개별 개체에서 myObservable.valueHasMutated()가입자에게 재평가해야한다는 사실을 알리기 위해 호출 할 수 있습니다 . 언급 한 것처럼 KO에서는 일반적으로 필요하지 않습니다.


답변

경우에 따라 바인딩을 제거한 다음 다시 적용하는 것이 유용 할 수 있습니다.

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


답변

내 bindHTML knockout 바인딩 핸들러로 JSFiddle을 만들었습니다 :
https://jsfiddle.net/glaivier/9859uq8t/

먼저 바인딩 핸들러를 자체 (또는 공통) 파일에 저장하고 녹아웃 후 포함합니다.

이것을 사용하면 바인딩을 이것으로 전환하십시오 :

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

OR

<!-- ko bindHTML: htmlValue --><!-- /ko -->


답변