弹出使用淘汰赛js

art*_*ink 5 javascript dialog popup viewmodel knockout.js

我正在将我的一个较旧的jquery插件从DOM丛林迁移到这个花哨的mvvm框架淘汰赛.

我将使用哪种技术来正确显示弹出式容器?我想通过电话填充它,因为我每次都得到一个json feed.

我尝试了使用with绑定的方法,但它仍尝试在第一个运行时填充partial.

<!-- ko with: daySubmitFormViewModel -->
    <div class="ec-consulation-lightbox">
        <form id="cForm" class="form-container">
           // Some bindings here.
        </form>
    </div>
<!-- /ko with: -->
Run Code Online (Sandbox Code Playgroud)

And*_*ers 7

创建自定义绑定,在可观察的上打开/关闭函数触发器.

我已经为jQuery Dialog做了一个自定义绑定,它将此approuch与KO模板结合使用.

<div id="dialog" data-bind="dialog: { autoOpen: false, modal: true, title: dialogTitle }, template: { name: 'dialog-template', data: dialogItem, 'if': dialogItem }, openDialog: dialogItem"></div>
Run Code Online (Sandbox Code Playgroud)

你可以在这里找到我的绑定以及其他一些 https://github.com/AndersMalmgren/Knockout.Bindings

现场演示http://jsfiddle.net/H8xWY/102/


Max*_*eev 5

它也可以在没有自定义绑定的情况下完成.示例如下

            <div class="modalWindowBackground" data-bind="visible: popupDialog" >
                <div class="modalWindow" data-bind="with:popupDialog">
                    <div class="content">
                        <h2 data-bind="text: title"></h2>
                        <p>
                            <span data-bind="text: message"></span>
                        </p>
                        <div class="buttonSpace">
                            <input type="button" class="closeButton" data-bind="value: closeButtonText, click: $root.hidePopupDialog" />
                        </div>                            
                    </div>
                </div>
            </div>
Run Code Online (Sandbox Code Playgroud)

Viewmodel代码:

    self.showAlert = function (title, message, closeButtonText) {
        self.popupDialog({ title: title, message: message, closeButtonText: closeButtonText });
    };
    self.hidePopupDialog = function () {
        self.popupDialog(null);           
    };

  //Code which opens a popup
  self.remove = function () {
        .... some code ...
        if (someCondition) {
          self.showAlert('SomeTitle', 'Message', 'OK');
          return;
        }
        .... some code ...
   };
Run Code Online (Sandbox Code Playgroud)