Knockout Binding Handlers未定义错误

时间:2014-07-01 14:35:02

标签: javascript jquery twitter-bootstrap knockout.js

我有这个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作为绑定库

1 个答案:

答案 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" );;
    }
};