2014-10-22 2 views
0

하위 모델이있는 기본 뷰 모델이 있으며, 동일한 페이지에서 사용됩니다. 버튼 클릭시 일부 숨겨진 하위보기를로드하려고합니다. BU는 그런 식으로 작동하지 않습니다 :Init Late Binding Knockout을 할 수 없습니다.

function mainViewModel() { 

     var self = this; 

     self.moduleIn = createSubViewModel(moduleViewModel); 
     self.module1 = ko.observable(); 

     // this module will loaded after menu click 
     self.loadModule1 = function() { 
      // create only first attempt 
      if (typeof self.module1 == 'function') { 
       self.module1 = createSubViewModel(module1ViewModel); 
      } 
     } 
} 

ko.applyBindings(new mainViewModel); 

다음 동작 버튼

<div data-bind="click: loadModule1.bind($data)">Module 1</div> 

내 목표는이보기 만에 변화를 채울입니까? 당신이 적절하게 설정해야하므로

<div data-bind="with: module1"> 
... 
</div> 
+0

전체 JSFiddle 예제의 형태로 전체 소스를 제공해주십시오. 또한 브라우저 콘솔에 오류가 있습니까? – janfoeh

답변

1

모듈 1 당신이 그것을 무시하고, 관측이다. : 당신이 "loadModule1.bind ($ 데이터)를 클릭"= 데이터 바인딩으로 달성하려고했던 것 또한

function mainViewModel() { 

     var self = this; 

     self.moduleIn = createSubViewModel(moduleViewModel); 
     self.module1 = ko.observable(); 

     // this module will loaded after menu click 
     self.loadModule1 = function() { 
      // create only first attempt 
      if (typeof self.module1 == 'function') { 
       // setting module1 
       self.module1(createSubViewModel(module1ViewModel)); 
      } 
     } 
} 

확실하지 않다. loadModule1을 click 이벤트에 바인딩 할 수 있습니다.

<div data-bind="click: loadModule1">Module 1</div> 


<div data-bind="with: module1"> 
... 
</div> 
관련 문제