KendoWindow 在第一次打开时可以关闭,但在第二次打开时不能

KendoWindow can close when its first opened, but not when its open a second time

我遇到了一些奇怪的问题,在过去的几个小时里我一直在努力修复它,并一直在寻找答案,但我唯一找到的是相反的结果。我有一个 Kendo Window 会在我第一次打开按钮时关闭它,但是当我重新打开 window 我的按钮点击不会将其关闭。我所看到的每个地方都有相反的问题。 这是我的 window

代码
function CustomerPopupEditor() {
    $("#showCustomerEdit").append("<div id='window'></div>");
    var myWindow = $("#window").kendoWindow({
        width: "80%",
        height: "47%",
        title: "Customer",
        content: "/Customer/CustomerEditor",
        modal: true,
        actions: [
            "Close"
        ],
        close: function (e) {
            $("#window").empty();
        }
    }).data("kendoWindow");
    myWindow.center().open();
}

这是我的 kendo 工具栏,可以打开 window

template: "<button type='button' onClick='CustomerPopupEditor()' class='btn btn-warning'><span class='glyphicon glyphicon-edit'></span> Edit</button> &nbsp"

这是我在单击保存时用来关闭 window 的代码

function CloseTheWindow() {
    $("#window").data("kendoWindow").close();
}

所以对于我来说,我不明白为什么我可以让它在第一次打开而不是第二次打开时关闭。

您应该使用 $("#window").data("kendoWindow").destroy(); 而不是 $("#window").empty(); 这样 kendo 小部件就被破坏了。否则,您只需清理 html 个元素。

参考方法Destroy Widgets

尽管名称如此,close 函数实际上会隐藏 window,但它将保留为 DOM 元素。所以基本上,当您第二次创建 window 时,您的代码将在 DOM 中添加第二个 "#window 元素,并且它还会将第一个 #window 初始化为 kendoWindow 而它已经是 kendo Window.

所以基本上,您需要做的是调用销毁函数而不是关闭函数:

function CloseTheWindow() {
    $("#window").data("kendoWindow").destroy();
}