剑道窗口关闭不清楚吗?

时间:2013-12-17 19:55:43

标签: asp.net-mvc kendo-ui kendo-asp.net-mvc

我有一个使用kendoWindow打开弹出窗口的链接。每次我关闭弹出窗口并再次重新打开(从另一个链接),第一个的值根本不会清除。 仅供参考,这个剑道弹出窗口可以重复使用。

例如: 我有2个链接。链接A和链接B.

此链接将使用参数从控制器调用ActionResult。

链接A将生成text ='AAAAAAAAAAAAAA' 而链接B将产生text ='BBBBBBBBBBB'

//In controller:
public ActionResult Caller(string param)
{
    ViewModel viewModel = new ViewModel(); //This is a class that store a string.
    if(param == "A")
    {
        viewModel.Result = "AAAAAAAAAAAAAA";
    }
    else
    {
        viewModel.Result = "BBBBBBBBBBB";
    }
    return View(viewModel);
}

所以流程是: 1.单击链接A.它将打开值为= AAAAAAAAAAAAAA的弹出窗口。 2.关闭弹出窗口。 3.重新打开Link B的弹出窗口。有一段时间,它将保留AAAAAAAAAAAAAA,之后(可能大约需要2秒)它将变为BBBBBBBBBBB。

如果在连接速度较慢的情况下,将AAAAAAAAAAAAAA更改为BBBBBBBBBBB需要一段时间。

我的问题是: 为什么弹出窗口不会弹出空白弹出窗口(它仍然在布局上保存旧值)?

提前致谢, 维拉

3 个答案:

答案 0 :(得分:7)

布雷特的解释是正确的。在某些情况下,您只想再次显示相同的内容,因此保持内容是“收敛”行为。如果Kendo Window每次关闭时都会删除所有内容,那么每次要再次显示时,都必须重新填充内容。当用户知道他不再需要它时,这比使用户明确地清空内容效率低。

在您的情况下,您只需使用close事件清空窗口(demo):

$("#myWindow").kendoWindow({
    width: "300px",
    close: function (e) {
        $(this.element).empty();
    }
});

另一种选择是破坏窗口并创建一个新窗口。

答案 1 :(得分:2)

你自己说,“这个kendo弹出窗口可以重复使用。”关闭弹出窗口不会将其从DOM中删除。它只是隐藏起来。所以,当它再次打开时,它的内容并没有从以前改变过。你必须自己清除它。内容更新需要一段时间的原因是因为您必须等待来自服务器的往返请求/响应。

答案 2 :(得分:0)

btw ... KendoPopup窗口可重复使用并不意味着它应该保留旧内容。

这应该意味着他正在使用相同的Window控件,即他的表单或html上没有2个Window控件。

对于解决方案,他应该使用

1)像这样的停用事件

win_deactivate() 
{
    this.destroy();
}

这样每次窗口关闭时都会从DOM中删除窗口。

或者

2)定义2个窗口控件并显示/隐藏其中一个。