2016-10-21 4 views
0

관측 가능 속성을 어떤 방식으로 변경하는 사용자 지정 바인딩을 정의했습니다. customProperty를 가정 해 봅시다. (예를 들어) :넉 아웃 계산 대 사용자 지정 바인딩 계산 순서

ko.bindingHandlers.customBinding = { 
    update: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) { 
     //computes some value depending on observable value 
     //... 
     valueAccessor().customProperty = someValue; 
    } 
}; 

는 또한있는 내가 업데이트 customProperty의 값을 필요로 내 customBinded 관찰 트리거 그 계산 된 관찰 할 수있다. 사용자 지정 바인딩 내부에서 로깅이 발생하고 계산 된 코드가 customBinding 전에 계산되므로 이전 customProperty 값을 읽습니다.

바인딩이 계산보다 우선하도록 지정하거나 사용자 지정 바인딩을 "대기"하도록 계산할 수있는 해결 방법이 있습니까?

+1

customProperty를 관찰 가능하게 만들 수 있습니까? 내 생각 엔 계산 된 관측 가능 함수를 다시 발생시켜야한다는 것입니다. – gkb

+0

customProperty를 관측 가능으로 바꾸는 것은 불가능하지만 옵션 일 수 있습니다. – Nillus

답변

0

Rate-limiting observable notifications을 사용하면 계산 된 관찰 가능 실행을 지연시킬 수 있습니다. 예 :

viewModel.computed = ko.computed(function() { 
    var input = viewModel.input(); 
    return viewModel.input.customProperty + ' ' + input; 
}).extend({rateLimit: 10 }); 

약간의 지연으로 계산 된 관찰 가능 항목보다 먼저 바인딩을 실행할 수 있습니다. 데모는 JSFiddle example을 참조하십시오.