如何在kendo UI中的关闭操作中销毁kendo窗口弹出框

3

我在使用Kendo窗口进行弹出,当点击关闭锚标签时,它会关闭模型窗口,但仍停留在DOM中。我希望销毁模型弹出窗口。以下是我的代码。我在关闭操作中尝试了this.destory(),但它没有被销毁。请帮助我。

var selectRowsDialog = $("#select-Rows-dialog").kendoWindow({
            width: "800px",
            title: "Select rows",
            autoOpen: false,
            closable: true,
            modal: true,
            visible: false,
            close: function () { 
            },       
        }).data("kendoWindow").center().open();

1
this.destory()?你也试过 this.destroy() 吗? - Nisse Engström
3个回答

3

最佳方法是在窗口实例的 deactivate 事件中调用 destroy() 方法。这样做可以保留关闭动画效果。

<div id="window">Kendo UI Window here</div>

<script>
  $("#window").kendoWindow({
    deactivate: function(e) {
      e.sender.destroy();
    }
  });
</script>

我在“deactivate”事件中使用了this.destroy();,我猜这也可以工作吧? - JamieD77
1
是的,这是个人喜好的问题。 - dimodi

0

试试这个:

$("#select-Rows-dialog").data("kendoWindow").close();

谢谢您的回复。我已经尝试在close函数中使用$("#select-Rows-dialog").data("kendoWindow").close();,但是出现了错误。"Maximum call stack size exceeded"。我已经尝试过this.destory(),但是在关闭kendowindow并尝试打开时,出现了"Cannot read property 'center' of undefined"和"Cannot read property 'table' of undefined"的错误。请帮助我。 - kranthi pothireddy
你检查过你的脚本引用是否正确吗?一段时间以前,我通过更改 kendo.all.min.js 的引用解决了“无法读取未定义的属性'center'”问题。 - Sony Scaria
是的,它们是正确的并且没有任何问题。 - kranthi pothireddy

0

@Kranthi,这是在JavaScript中创建无限循环时发生的情况。所以,可能你正在Deactive事件处理程序中调用kendoWindow.close方法。他会卡在那里,因为当他调用close事件时,也会调用deactivate事件,所以就会出现“Maximum call stack size exceeded”的错误。 有两个选择,要么销毁你的窗口,要么完全清除你的模型。(可能还有第三种选择,就是从kendoWindow内部擦除iframe并重新创建它,但这不是我的最佳选择)所以: 1.在你的加载页面方法中,始终清空你的模型,或者按照你的处理方式,如果它变为空,请将其发送为空,但字面上像

    Model.id = ""

2. 在窗口关闭事件中调用destroy()方法,但当您需要再次打开窗口时,您将不得不从头开始调用所有内容,例如再次创建控件。这取决于您。

我不得不经常同时使用两者,因为我有一个非常大的应用程序,有着数百个弹出窗口,如果您不销毁它们,则使用kendoWindow让它们保持打开状态。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接