2013-11-22 1 views
0

applyBindings가 성공적으로 완료된 후 실행될 코드가 있습니다.ko.applyBindings의 성공 처리자

var vmObject = new myViewModel(); 
ko.applyBindings(vmObject, document.getElementById('page1')); 
dependantMethod(); 

비동기 실행 때문에 dependantMethod()가 더 빨리 실행되는 경우가 있습니다. dependantMethod()를 넣을 수 있도록 ko.applyBindings가 성공적으로 실행되었는지 여부를 확인하는 방법이 있습니까? 성공 처리기 내부?

감사합니다.

+0

'applyBindings'는 비동기 적이 지 않으므로 코드 예제에서'dependantMethod'는 항상'applyBindings'가 성공적으로 실행 된 후에 실행됩니다. 'applyBindings'는 어떤 것을 비동기 적으로 트리거 할 수도 있지만, 우리는 myViewModel 코드를보아야합니다. – sroes

+0

결과에 따라 질문을 닫거나 삭제할 수 있습니까? – Tanner

답변

1

viewmodel을 보지 않고도 완전히 대답하기는 어렵지만보기 모델 내에서 knockout subscribe 함수를 사용하는 것이 좋습니다.

viewmodel에 관측 가능 또는 관측 가능한 배열이있는 경우 해당 배열에 대한 변경 사항을 구독하고 예상 값이 있음을 확인하고 거기에서 종속 함수를 호출 할 수 있습니다.

var myViewModel = function() { 
    var self = this; 

    self.myArray = ko.observableArray([]); 

    // some code that populates the array 

    var subscription = self.myArray.subscribe(function (arr) { 
     // some check on the observable 
     if (arr.length > 0) { 
      self.dependantMethod();         
     } 
    }); 

    self.dependantMethod = function() { 
     // execute your code 

     // posibly dispose of the subscription if you don't want 
     // it called multiple times 
     subscription.dispose(); 
    }; 
}