Kendo Window 销毁后不再打开

Kendo Window not opening again once it is destroyed

我有一种情况需要在我的工作完成后销毁 kendo window。 Kendo window 点击按钮打开,完成后销毁。

但现在我遇到了一个问题,即一旦按钮被销毁,我就无法再次打开 window。

我的 Kendo Window 代码是:

        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();

如何实现?

我可以在 window 销毁后重新初始化它吗?

当 kendo Window 小部件被销毁时,它会从 DOM 中删除它的 HTML 元素,包括创建它的根元素。这就是您无法再次打开 window 的原因。这让您在使用 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 添加一个新元素,在显示之前将其转换为 window 小部件。可以安全地销毁,然后这个过程可以重复多次。

    <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>
    

既然你说你需要摧毁window,选项2是可行的;我建议加载新的 DOM 元素可能最容易通过使用 kendo 模板(如上所示)来实现。