我有一个表格,可以添加新的人员记录,也可以编辑他们的记录。
因此,当它是新记录时,表单会显示与其资格相对应的未选中复选框列表。他们毫不费力地保存回数据库。
当我想编辑人员数据时,我可以将他们的资格作为资格 ID 的分隔列表来获取。因此,我想检查表单上的相应复选框。
我想有一个映射/更新函数需要用这个人的数据更新可观察的复选框数组。
我已经建立了一个基本的jsFiddle,但缺少重要的一点。
我想知道有人能指出我正确的方向吗?
提前致谢
我有一个表格,可以添加新的人员记录,也可以编辑他们的记录。
因此,当它是新记录时,表单会显示与其资格相对应的未选中复选框列表。他们毫不费力地保存回数据库。
当我想编辑人员数据时,我可以将他们的资格作为资格 ID 的分隔列表来获取。因此,我想检查表单上的相应复选框。
我想有一个映射/更新函数需要用这个人的数据更新可观察的复选框数组。
我已经建立了一个基本的jsFiddle,但缺少重要的一点。
我想知道有人能指出我正确的方向吗?
提前致谢
以下自定义绑定最初是由另一个用户 RPNiemeyer 发布的,但目前我无法检索到答案。无论如何,您可以在以下位置找到它:
自定义绑定称为“checkedWithInit”,此处 HTML 元素的 checked 属性很方便地设置为 true,以便清楚起见:
<input id="yourId" type="checkbox" value="yourValue" data-bind="checkedWithInit: yourInitialStateVariable" checked="true" />
自定义绑定代码是元素的“init”事件处理程序的“覆盖”
ko.bindingHandlers.checkedWithInit = {
init: function(element, valueAccessor, allBindingsAccessor, context) {
var value = valueAccessor();
if (element.checked) {
//if it is an array then push this value to it
if (value.push) {
value.push(element.value);
} else { //otherwise, just write the value
if (ko.isWriteableObservable(value)) {
value(element.checked);
}
}
}
//run the real checked binding's init function
ko.bindingHandlers.checked.init(element, valueAccessor, allBindingsAccessor, context);
},
//always run the checked bindings update function
update: ko.bindingHandlers.checked.update
};
我希望这有帮助,
瓦莱里奥