剑道窗户一旦被破坏,便不会再次打开

时间:2018-10-19 13:08:26

标签: kendo-ui kendo-window

在我的工作完成后,我需要销毁剑道窗口。 只需单击一下按钮,便会打开Kendo窗口,并在其工作完成时销毁。

但是现在我有一个问题,一旦按钮被销毁,我无法再次打开该窗口。

我的Kendo窗口代码为:

        var Snapshotwindow = $('#newWindow');
        Snapshotwindow.kendoWindow({
            width: "500px",
            height: "267px",
            resizable: false,
            sortable: false,
            modal: true,
            draggable: false,
            title: "New Window",
            visible: false,
            appendTo: "#AppBody",
        });
        Snapshotwindow.data("kendoWindow").center().open();

我该如何实现?

一旦窗口被销毁,我可以重新初始化它吗?

1 个答案:

答案 0 :(得分:2)

当Kendo Window小部件被销毁时,它将从DOM中删除其HTML元素,包括从中创建它的根元素。这就是为什么您无法再次打开窗口的原因。使用Window小部件时,这为您提供了两种基本方法:

  1. 第一次创建窗口小部件,并保留对其的引用。不要在关闭时破坏,并使用参考重新打开以后的时间。

    if (Snapshotwindow == null) {
        Snapshotwindow = $('#newWindow').kendoWindow({
            width: "500px",
            height: "267px",
            resizable: false,
            sortable: false,
            modal: true,
            draggable: false,
            title: "New Window",
            visible: false,
            appendTo: "#AppBody",
        }).data("kendoWindow");
    }
    Snapshotwindow.center().open();
    
  2. 在DOM上添加一个新元素,在显示它之前将其变成一个窗口小部件。可以安全地销毁,并且此过程随后会重复多次。

    <script id="modal-editor-window" type="text/x-kendo-template">
        <!-- your window content here -->
    </script>
    
    <script type="text/javascript">
        var options = {
            title: "Edit",
            modal: true,
            visible: false,
            deactivate: function () {
                this.destroy();
            }
        };
    
        var mew = $.parseHTML($("#modal-editor-window").html().trim());
        $("body").append(mew);
    
        var mw = $(mew).kendoWindow(options).data("kendoWindow");
        mw.center().open();
    </script>
    

由于您说需要销毁窗户,因此选择方法2是可行的;我建议使用kendo模板(如上所示)最容易实现加载新的DOM元素。