1

当单击以下内容时,我正在尝试禁用背景关闭模式:

ko.bindingHandlers.showModal = {
    init: function (element, valueAccessor) {
    },
    update: function (element, valueAccessor) {
        var value = valueAccessor();
        if (ko.utils.unwrapObservable(value)) {
            $(element).modal({ backdrop: 'static', keyboard: true });
            // this is to focus input field inside dialog
            $("input", element).focus();
        }
        else {

            $(element).modal('hide');
        }
    }
};

据我了解,$(element).modal({ backdrop: 'static', keyboard: true });应该实现我所追求的。但是,如果我单击背景,模式仍然会关闭,实际上会破坏“显示”按钮。我在这里做错了什么?

小提琴:http: //jsfiddle.net/PTSkR/175/

4

1 回答 1

2

你的问题是你试图多次初始化你的模态。

您设置的初始化逻辑backdrop: 'static'应该进入init函数(仅调用一次),您需要在函数中调用.modal('show')和:.modal('hide')update

ko.bindingHandlers.showModal = {
    init: function (element, valueAccessor) {
        $(element).modal({ backdrop: 'static', keyboard: true, show: false });
    },
    update: function (element, valueAccessor) {
        var value = valueAccessor();
        if (ko.utils.unwrapObservable(value)) {
            $(element).modal('show');
            $("input", element).focus();
        }
        else { 
            $(element).modal('hide');
        }
    }
};

演示JSFiddle

于 2013-08-22T10:47:38.750 回答