이 매우 간단한 바인딩이 있습니다.
ko.bindingHandlers.chosen = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
console.log("INIT");
},
update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
console.log("IT WORKS!");
}
};
선택에 사용 :
<select data-bind="
options: Options,
chosen: Options
"></select>
Options
다음과 같이 선언됩니다.
this.Options = ko.observableArray(opt1);
필요한 경우 다음과 같이 업데이트되었습니다.
this.Options(newValues);
그러나 "IT WORKS"
선택 목록이 렌더링 될 때 한 번만 기록 되고 다시 는 기록되지 않습니다. 이 jsfiddle을 참조하십시오 . "다시로드"버튼을 눌러보십시오. 배열이 업데이트되고 선택 목록이 다시 렌더링되지만 (예!) 사용자 지정 업데이트 기능이 호출되지 않습니다 (아니요!). 강제로 시도했지만 .valueHasMutated
성공하지 못했습니다.
제대로 작동하려면 업데이트 기능이 필요합니다. 왜 이런 일이 일어나지 않습니까?
valueAccessor
업데이트 기능에서 사용하지 않기 때문에 발생하지 않습니다 . 그것을 사용하면 update
함수가 시작됩니다.
ko.bindingHandlers.chosen = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
console.log("INIT");
},
update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
var value = ko.unwrap(valueAccessor());
console.log("IT WORKS!");
}
};
다음은 업데이트 된 바이올린입니다. http://jsfiddle.net/wzTg4/8/
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다