4

JSFiddle: http://jsfiddle.net/PTSkR/177/

Desired behavior: When I click close or the x button, the modal closes, but I can still open it again if I click "show".

What's happening: The modal closes one time and then never opens again.

Code:

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

1 に答える 1

5

hiddenオブザーバブルをクリアできるように、モーダルのイベントを確実に処理する必要があります。次に、次に に設定するとtrue、実際に変更されたので、すべてのサブスクライバーに通知されます (値が同じ値に設定されている場合、オブザーバブルは通知しません)。

あなたの初期化でこのようなもの:

    init: function (element, valueAccessor) {
        $(element).on("hidden", function() {
            valueAccessor()(false); 
        });
    },

必要に応じko.isWriteableObservableて、バインディングに渡された値が実際に書き込み可能なオブザーバブルであるかどうかを判断するために使用できます。

于 2013-09-18T19:10:59.403 に答える