我有一組複選框,每個綁定到「檢查」的處理程序自定義:如何在淘汰賽中使用擴展器將元素ID綁定到observable?
<input type="checkbox" name="colours-red" data-bind="jqmCheckbox: colourRed" id="check-1" />
<input type="checkbox" name="colours-green" data-bind="jqmCheckbox: colourGreen" id="check-2" />
<input type="checkbox" name="colours-blue" data-bind="jqmCheckbox: colourBlue" id="check-3" />
我的視圖模型很簡單:
this.colourRed = ko.observable(false);
this.colourGreen = ko.observable(false);
this.colourBlue = ko.observable(false);
現在,我儘量延長顏色接下來,讓它自動更新。 我需要其他用戶得到通知,如果這是發生變化:
ko.extenders.elementId = function (target, option) {
target.elId = ko.observable();
function setElementId(target, option) {
target.elId(option);
}
target.subscribe(setElementId);
return target;
};
自定義裏面綁定我能得到的元素ID:
ko.bindingHandlers.jqmCheckbox = {
update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
ko.bindingHandlers.checked.update(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext);
// ...set this valueAccessor extender ?
}
};
但我沒能得到這個工作,而且我也不知道這是否可能。 如何設置我的擴展器在自定義綁定處理程序中,元素可用作參數?
這是的jsfiddle:提前http://jsfiddle.net/Tk2FZ/1/
感謝
非常感謝您的回答!它的工作,迄今。 但是,在我看來,在你的解決方案中,這個子可觀察性僅在父綁定初始化後纔可用,這是我查看擴展器和函數的原因。 但也許我錯了,或者還有另外一個原因,所以我只是更新了小提琴來更好地解釋我的觀點:現在我無法在另一個計算的觀察值中獲得子觀察值的值。 您的意思是? 已更新:http://jsfiddle.net/Tk2FZ/5/ – user2308978 2013-05-06 22:04:29