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'に入り、関数内でandinitを呼び出す必要があります。.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 に答える