淘汰模式窗口只打开一次

knockout modal window opens only once

本文关键字:一次 模式 窗口 淘汰      更新时间:2023-09-26

我有引导模态窗口打开按钮点击。一切都很好,除了一件事:当我点击外模态空间-模态窗口成为关闭,但我可以打开它再次点击按钮。如果我关闭模式按钮关闭-它工作得很好。

更新:当我使用'Esc'键盘关闭模式时-行为与outmodal点击相同。


<标题> HTML
<button data-bind="click: function () { $root.showLogModal(); }" title="Show Logs" class="btn btn-large btn-info">Show Logs</button>
<div data-bind="bootstrapLogModal: logModal" tabindex="-1" role="dialog"></div>
<标题>自定义模板
<script id="showLogModal" type="text/html">
<div class="modal-header">
    <button type="button" class="close" data-bind="click: close" aria-hidden="true">&times;</button>
    <h3>Logs</h3>
</div>
<div class="modal-body">
    <div class="alert alert-info">
      Some Content
    </div>
</div>
<div class="modal-footer">
    <button type="button" class="btn" data-bind="click: close">Close</button>
</div>

<标题> JS h1> h2>http://jsfiddle.net/tLT6d/这是一个活生生的例子

这是预期的行为,如果你想防止点击外部区域时模式关闭,提供backdrop属性作为'static'

Includes a modal-backdrop element. Alternatively, specify static for a backdrop which doesn't close the modal on click.
<标题> 更新

我不知道为什么你重写引导模态进入淘汰赛,但让你的代码工作时,不关闭模态外部区域被点击。只需在绑定处理程序

中添加这行代码
ko.renderTemplate("showLogModal", vm, null, element);
// adds new code
$(element).modal({ backdrop: 'static', show: false });
var showHide = ko.computed(function () {
   $(element).modal(vm.show() ? 'show' : 'hide');
});
<标题>更新2 h1> 修改初始代码以执行正确的关闭,当单击外部区域时,附加隐藏事件处理程序并调用相关的关闭方法。
// adds new code
$(element).on("hidden.bs.modal", function(){
   vm.close();
});
var showHide = ko.computed(function () {
   $(element).modal(vm.show() ? 'show' : 'hide');
});