programing

녹아웃 : 계산 된 관찰 가능 vs 함수

coolbiz 2021. 1. 15. 08:31
반응형

녹아웃 : 계산 된 관찰 가능 vs 함수


녹아웃을 사용할 때 간단한 함수가 아닌 읽기 전용 계산 관찰 가능 항목을 사용하면 어떤 이점이 있습니까?

예를 들어 다음 뷰 모델 생성자와 html 스 니펫을 사용합니다.

var ViewModel = function(){
    var self = this;
    self.someProperty = ko.observable("abc");
    self.anotherProperty = ko.observable("xyz");
    self.someComputedProperty = function(){
        return self.someProperty() + self.anotherProperty();
    };    
};

<input data-bind="value: someProperty"/>
<input data-bind="value: anotherProperty"/>
<p data-bind="text: someComputedProperty()"></p>

여기에있는 모든 것이 예상대로 작동하는 것처럼 보이므로 대신 사용해야하는 이유가 있습니다.

​var ViewModel = function(){
    var self = this;
    self.someProperty = ko.observable("abc");
    self.anotherProperty = ko.observable("xyz");
    self.someComputedProperty = ko.computed(function(){
        return self.someProperty() + self.anotherProperty();
    });    
};


<input data-bind="value: someProperty"/>
<input data-bind="value: anotherProperty"/>
<p data-bind="text: someComputedProperty"></p>

http://knockoutjs.com/documentation/computedObservables.html 의 문서에 "... 선언적 바인딩은 단순히 계산 된 관찰 가능 항목으로 구현됩니다"라고 명시되어 있으므로 내 뷰 모델에서 명시 적으로 사용할 필요가 있음을 의미합니다. ?


계산 된 Observable의 유일한 목적이 그것에 대해 간단한 바인딩을 수행하는 것이라면 함수를 사용하는 것이 동일합니다. 바인딩은 종속성을 추적하기 위해 계산 된 Observable 내부에 구현되므로 Observable이 변경되면 바인딩을 다시 트리거합니다.

다음은 계산 된 관찰 가능 항목과 함수에 대해 고려해야 할 몇 가지 사항입니다.

  • 계산 된 관찰 가능 항목의 값은 캐시되므로 생성 될 때와 종속성이 업데이트 될 때만 업데이트됩니다. 일반 함수의 경우 매번 논리를 실행해야합니다. 많은 것들이 그 값에 의존한다면 (컬렉션의 각 항목이 부모의 값에 대해 바인딩되는 경우)이 논리는 계속해서 실행됩니다.

  • JavaScript에서 다른 Observable처럼 계산 된 Observable을 자유롭게 사용할 수 있습니다. 즉, 수동 구독을 생성하고 다른 계산에서 의존 할 수 있습니다 (함수를 호출하면이 종속성도 생성됨). KO의 일반 유틸리티 메서드를 사용 ko.utils.unwrapObservable하여 일반적으로 함수로 호출해야하는지 값을 검색하지 않아도되는지 여부를 결정할 수 있습니다.

  • 궁극적으로 값을 서버로 전달하려는 경우 계산 된 관찰 가능 항목이 JSON 출력에 자연스럽게 표시되는 반면 일반 함수의 결과 인 값은 JSON으로 변환 될 때 사라집니다 (더 많은 작업을 수행해야합니다. 먼저 해당 함수에서 속성을 채 웁니다).

참조 URL : https://stackoverflow.com/questions/11527760/knockout-computed-observable-vs-function

반응형