2017-03-29 1 views
1

페이지에 추가하는 녹아웃 구성 요소가 있습니다. 내가 만든 뷰 모델의 인스턴스로 ko.applyBindings을 호출하려고합니다. 그러나 녹아웃은 그것을 무시하고 자체 인스턴스를 만드는 것으로 보인다.녹아웃은 제공된 뷰 모델 인스턴스를 사용하지 않습니다.

코드 :

ko.components.register("my-component", {viewModel: MyViewModel, template: "....."}); 
ko.applyBindings(new MyViewModel(this.config), document.getElementsByTagName("my-component")[0]); 

나는 MyViewModel의 생성자에 console.log을하고 난 두 인스턴스가 생성되는 것을보고 오전 : 내가 전달하는 매개 변수를 하나 하나없이. 그리고 녹아웃은없는 것을 사용하는 것 같습니다.

내가 뭘 잘못하고 있니?

답변

2

구성 요소에는 실제로 디자인별로 자체보기 모델이 있습니다. 그러나 이전에 만든 뷰 모델의 인스턴스를 전달할 수 있습니다.

var myViewModel = new MyViewModel(this.config); 
ko.components.register("my-component", { viewModel: { instance: myViewModel }}); 
ko.applyBindings(myViewModel); 
+0

이렇게하는 유일한 방법입니까? –

+0

그것은 어느 정도 유일한 길입니다. 아이디어는 이미 뷰 모델을 만든 경우 템플릿 바인딩을 대신 사용할 수 있으므로 구성 요소가 올바른 솔루션이 아닐 수도 있습니다. 기존 인스턴스 전달은 추가 고려 사항으로 추가되었습니다. –