Twitter bootstrap 如果点击背景,Twitter引导模式Bindinghandler将被击倒

Twitter bootstrap 如果点击背景,Twitter引导模式Bindinghandler将被击倒,twitter-bootstrap,knockout.js,Twitter Bootstrap,Knockout.js,我尝试在单击以下按钮时禁用背景关闭模式: ko.bindingHandlers.showModal = { init: function (element, valueAccessor) { }, update: function (element, valueAccessor) { var value = valueAccessor(); if (ko.utils.unwrapObservable(value)) {

我尝试在单击以下按钮时禁用背景关闭模式:

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({background:'static',keyboard:true})应该达到我的目标。但是如果我点击背景,模态仍然会关闭,事实上会破坏“显示”按钮。我做错了什么


Fiddle:

您的问题是您试图多次初始化模式

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

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');
        }
    }
};
演示