내가 knockout.js의 사용자 지정 바인딩에 다음과 같은 동작으로 난처한 상황에 빠진하고있다 바인딩 :사용자 정의 valueAccessor 예상치 못한 결과
ko.bindingHandlers.customBinding = {
update: function(element, valueAccessor, allBindingsAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor());
console.log(JSON.stringify(value));
}
}
ko.applyBindings({
someText: ko.observable("inital value")
});
및
<input type="text" data-bind="value: someText, customBinding: {some: 'option'}">
을 valueAccessor()
는 나에게보기 모델을 제공해야 속성 값 (즉, 관찰 가능 someText
)에 바인딩 된 속성. 문서 인용하기 :
valueAccessor
-이 바인딩과 관련된 현재 모델 속성을 가져 오기 위해 호출 할 수있는 JavaScript 함수입니다. 매개 변수를 전달하지 않고이 모델을 호출하면 (즉,valueAccessor()
) 현재 모델 속성 값을 가져올 수 있습니다.
그러나, 정말, 즉 {some: 'option'}
바인딩 값을 반환 할 것입니다 않습니다 .
무엇이 누락 되었습니까?
아하이 봐요. 그건 의미가 있습니다. 예상했던대로 작동하지 않지만 'value'바인딩이 작동하는 방식과 일치합니다. 그것은 문서가 말하는 방법과 일관성이 없습니다. 'valueAccessor'는 바인딩에서 전달하고자하는 것은 무엇이든 상관 없으며 반드시 "현재 모델 속성"이 될 필요는 없습니다. 감사. – Tomalak
예. 당신이 따라가는 다른 것들은 allBindingsAccessor에서부터 선택할 수 있습니다. 여기서 'source'라는 속성의 문자열을 전달하는 간단한 예제를 만들었습니다. http://jsfiddle.net/j5y8H/3/ (또는 Grim 포인트와 같은 'value'속성을 선택할 수 있습니다) –