我有这个jsfiddle,它显示了一个表和一些有角色的用户。
我想在某些点击添加角色等时弹出模态表单。
此ko.bindingHandlers.modal
函数的更新属性似乎有错误:
ko.bindingHandlers.modal = {
init: function (element, valueAccessor) {
$(element).modal({ show: false }).on("hidden", function () {
var data = valueAccessor();
if (ko.isWriteableObservable(data))
data(null);
});
return ko.bindingHandlers["with"].init.apply(this, arguments);
},
update: function (element, valueAccessor) {
var data = ko.unwrap(valueAccessor());
$(element).modal( data ? "show" : "hide" );
return ko.bindingHandlers["with"].update.apply(this, arguments); // Error on this line
}
};
我不知道为什么会发生这种情况,我复制了Ryan Niemeyer的代码dev video
它的34分钟。
这是一个Bootstrap模式对话,使用Knockout JS作为绑定库
答案 0 :(得分:2)
with
绑定不再具有更新功能
从init函数中使用
ko.applyBindingsToNode(element, { with: valueAccessor() });
更新
ko.bindingHandlers.modal = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
$(element).modal({ show: false }).on("hidden", function () {
var data = valueAccessor();
if (ko.isWriteableObservable(data))
data(null);
});
ko.applyBindingsToNode(element, { with: valueAccessor() }, bindingContext);
return { controlsDescendantBindings: true };
},
update: function (element, valueAccessor) {
var data = ko.unwrap(valueAccessor());
$(element).modal( data ? "show" : "hide" );;
}
};