我有一组复选框,每个都绑定到一个自定义的“选中”处理程序:
<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/
提前致谢