【问题标题】:KendoWindow can close when its first opened, but not when its open a second timeKendoWindow 可以在第一次打开时关闭,但在第二次打开时不能关闭
【发布时间】:2016-05-24 01:11:27
【问题描述】:

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

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

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

【问题讨论】:

  • 我试图重现您的问题,但看起来我遗漏了一些东西。请检查这个demo是否可以重现?
  • CloseTheWindow()函数怎么用?

标签: jquery kendo-ui kendo-window


【解决方案1】:

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

参考如何Destroy Widgets

【讨论】:

  • 成功了,感谢您添加销毁widjets的链接。
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 2020-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多