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');
}
}
};
答案 0 :(得分:5)
您需要确保处理模态的hidden
事件,以便清除可观察对象。然后,下次将其设置为true
时,它将通知任何订户,因为它实际发生了更改(可观察者在其值设置为相同值时不会通知)。
你的init中有这样的东西:
init: function (element, valueAccessor) {
$(element).on("hidden", function() {
valueAccessor()(false);
});
},
如有必要,您可以使用ko.isWriteableObservable
来确定传递给绑定的值是否实际上是您可以写入的可观察值。