2013-08-28 1 views
5

같은 결과로 두 가지 방법으로 내보기 모델에 함수를 작성할 수있는 것 같습니다.정상적인 자바 스크립트 함수와 계산 사이의 차이 녹아웃

자바 스크립트 기능 정상 :

vm.Texts = function() { 
    var self = vm; 
    if (self.selectedFormat()) { 
    return self.selectedFormat().Texts(); 
    } 
}; 

KO 계산 :

vm.Texts = ko.computed(function() { 
    var self = vm; 
    if (self.selectedFormat()) { 
    return self.selectedFormat().Texts(); 
    } 
}); 

'VM이'뷰 모델 selectedFormat 인 뷰 모델에서 관측된다. 두 경우 모두 선택한 서식을 변경하면 기능이 트리거됩니다. 그래서 내 질문은 두 가지 방법의 차이점은 무엇입니까?

<span data-bind="text: Texts()"></span> 

결론 :

+0

어떻게 '텍스트'기능을 사용하고 계십니까? – nemesv

답변

4

나는 데이터 바인딩이 라인을 따라 랬있어 두 경우 모두 에서
text 초기 렌더링 selectedFormat
에 대한 종속성을 만듭니다 바인딩.


세부 사항 :

  1. 기능의 경우 : 당신의 상황
    모두가 span 때문에 업데이트됩니다. text 바인딩은 함수에서 호출 되었기 때문에 관찰 할 수있는 에 대한 의존성이 있다는 것을 최초 렌더링시 알아 차릴 것입니다. 관측 가능 항목이 변경되면 KO 레지스터에 대한 종속성을 확인하고 text 바인딩에 대한 업데이트를 트리거합니다. 종속성은 다음과 같습니다

    text binding --> depends-indirectly-on --> selectedFormat

    this fiddle를 참조하십시오.

  2. 계산 된 케이스. 두 번째 경우는 동일하게 작동 할 수 있지만, 조금 더 분명합니다. Texts은 이제 관찰 할 수있는 selectedFormat의 중개자 역할을하는 (계산 된) 관찰 가능에 종속되기 때문입니다. 종속성은 지금 :

    text binding --> depends-on --> Texts computed --> depends-on --> selectedFormat

    this fiddle를 참조하십시오.