4

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

期望的行为:当我单击关闭或 x 按钮时,模式关闭,但如果单击“显示”,我仍然可以再次打开它。

发生了什么:模式关闭一次,然后再也不会打开。

代码

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模态的事件,以便您可以清除您的 observable。然后,下次您将其设置为 时true,它将通知任何订阅者,因为它实际上已更改(当它们的值设置为相同值时,可观察对象不会通知)。

在你的初始化中是这样的:

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

如有必要,您可以使用ko.isWriteableObservable来确定传递给绑定的值是否实际上是您可以写入的 observable。

于 2013-09-18T19:10:59.403 回答