twitter-bootstrap – 用knockout自动显示twitter引导模态对话框

前端之家收集整理的这篇文章主要介绍了twitter-bootstrap – 用knockout自动显示twitter引导模态对话框前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当我从列表中选择一个项目时,我需要显示在单页应用程序中编辑项目的模态对话框。

问题:我使用可见的绑定,但是这样做很麻烦,它不能正常工作,因为它只显示对话框,没有覆盖,并且渐变(如果有的话)不起作用。

HTML:

<div class="modal hide fade" data-bind="visible:selectedItem,with:selectedItem">
  <div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
    <h3 data-bind="text:name"></h3>
  </div>
  <div class="modal-body">
    <form data-bind="submit:deselectItem">
        <!-- editor for item here -->
    </form>
  </div>
  <div class="modal-footer">
    <a href="#" class="btn" data-bind="click:deselectItem">Close</a>
  </div>
</div>

这样的模型是具有observableList,obervable selectedItem和deselectItem函数的简单对象,它将selectedItem设置为null。

解决方法

正如我想到的,(可能)最好的方法是创建一个ko绑定处理程序,我称之为showModal:
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');
        }
    }
};

用法是这样的:

<div class="modal hide fade" data-bind="showModal:selectedItem,with:selectedItem">
  <div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
    <h3 data-bind="text:name"></h3>
  </div>
  <div class="modal-body">
    <form data-bind="submit:deselectItem">
        <!-- editor for item here -->
    </form>
  </div>
  <div class="modal-footer">
    <a href="#" class="btn" data-bind="click:deselectItem">Close</a>
  </div>
</div>

猜你在找的Bootstrap相关文章