Bootstrap 3 Modal和Knockout使用ko.bindingHandlers ['with']

时间:2017-08-15 20:52:21

标签: javascript knockout.js bootstrap-modal knockout-3.0

我正在尝试将Bootstrap 3模式合并到具有自定义绑定的knockoutjs视图模型中,并且大量使用knockout.js - deferred databinding for modal?

在弹出窗口中使用https://jsfiddle.net/BitWiseGuy/4u5egybp/每个observable是否有效,即data-bind="value: UserBeingEdited() && UserBeingEdited().Age,这将导致对具有许多字段的较大视图模型进行大量检查(写入)。 / p>

因此,要删除此检查,我尝试使用return ko.bindingHandlers['with'].update.apply(this, arguments);修改模态绑定,如下所示:

ko.bindingHandlers['modal'] = {

    init: function(element, valueAccessor, allBindingsAccessor) {
        var allBindings = allBindingsAccessor();
        var $element = $(element);
        $element.addClass('hide modal');

        if (allBindings.modalOptions && allBindings.modalOptions.beforeClose) {
            $element.on('hide', function() {
                    var value = ko.utils.unwrapObservable(valueAccessor());
                    return allBindings.modalOptions.beforeClose(value);
                });
        }

        return ko.bindingHandlers['with'].init.apply(this, arguments);
    },

    update: function(element, valueAccessor) {
        var value = ko.utils.unwrapObservable(valueAccessor());

        if (value) {
            $(element).removeClass('hide').modal('show');
        } else {
            $(element).modal('hide');
        }

        return ko.bindingHandlers['with'].update.apply(this, arguments);
    }
};

然后允许我在没有任何检查data-bind="text: quantity"的情况下进行绑定,但是虽然我正在收到错误:Uncaught TypeError: Cannot read property 'apply' of undefined

我有以下问题:

  1. 如何使用我的小提琴移除控制台中的错误http://jsfiddle.net/6eh3Lrsm/9/

  2. 根据原始SO链接的评论,with绑定重新创建了可以阻止控件工作的DOM元素 - 在这种情况下我需要注意这个(以及任何指向原因的链接) )?在这些情况下,我假设不使用with并在数据绑定值本身内进行绑定检查就足够了吗?

0 个答案:

没有答案