3

我遇到了一些奇怪的问题,在过去的几个小时里我一直在尝试解决它并寻找答案,但我发现的唯一问题是相反的。我有一个剑道窗口,当我第一次打开按钮时单击它会关闭它,但是当我重新打开窗口时,我的按钮单击不会关闭它。在我所看到的所有地方,人们都有相反的问题。这是我的窗口代码

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

这是我打开窗口的剑道工具栏

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

这是我点击保存时用来关闭窗口的代码

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

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

4

2 回答 2

2

您应该使用$("#window").data("kendoWindow").destroy();而不是$("#window").empty(); 这种方式破坏剑道小部件。否则,您只需清理 html 元素。

参考如何销毁小部件

于 2016-05-24T11:03:01.627 回答
1

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

所以基本上,你需要做的是调用destroy函数而不是close:

function CloseTheWindow() {
    $("#window").data("kendoWindow").destroy();
}
于 2016-05-24T11:35:12.307 回答