2013-01-04 4 views
0

사용자 바인딩을 만드는 데 몇 가지 문제가 있습니다. 뷰 모델이 변경 될 때마다 바인딩 바인딩의 업데이트 콜백을 이해해야합니다.버튼의 녹아웃 맞춤 바인딩

작은 예제를 만들었습니다.

ko.bindingHandlers.testBinding = { 

    update: function(element, valueAccessor, allBindingsAccessor, viewModel,  bindingContext) { 
//just for testing purposes 
    alert("update"); 
    } 
}; 

$(document).ready(function() { 
function AppViewModel() { 
    var self = this; 
    self.firstName = ko.observable("Bert"); 

} 
ko.applyBindings(new AppViewModel()); 
});​ 

http://jsfiddle.net/alexmaie/pbEmS/

가 나는 버튼에 바인딩을 연결합니다. 바인딩의 업데이트는 한 번 실행되고, 다시 관찰 할 수있는 데이터를 변경하더라도 다시 실행되지 않습니다.

이 접근 방식을 사용하여 canExecute 바인딩을 구현하고자합니다.

답변

1

바인딩은 computed observable 내부에서 구현되므로 실제로 액세스되는 관찰 가능/계산 결과에 따라 종속성을 추적합니다.

그래서,이 당신의 update 기능에, 당신이 좋아하는 자신에게 전달 된 그 관찰의 값에 액세스 할 것이라는 점을 의미한다

ko.bindingHandlers.testBinding = { 
     update: function(element, valueAccessor) { 
     //dependency is created here 
     var value = ko.utils.unwrapObservable(valueAccessor()); 
     alert("update " + value); 
     } 
    } 

업데이트 바이올린 다음에 대한 http://jsfiddle.net/rniemeyer/pbEmS/2/

+0

안녕하세요, 감사합니다 설명, 나는 종속성이 만들어 졌던 지점을 놓치고있었습니다. –