【问题标题】:KendoUI Window Flashes Old ContentKendo UI 窗口闪烁旧内容
【发布时间】:2013-10-04 01:06:49
【问题描述】:

使用 KendoUI 显示弹出窗口,我注意到如果我通过调用 refresh 重用现有窗口,它会短暂显示旧内容,直到 AJAX 请求完成。

我的代码:

function clickHandler(evt) {
    evt.preventDefault();

    var dta=this.dataItem($(evt.currentTarget).closest("tr"));

    convertWindow.refresh({ type: "GET", url: "CallMeConvert?AppointmentId="+dta.AppointmentId});
    convertWindow.center();
    convertWindow.open();
    }

有什么方法可以防止这种情况发生,还是我必须每次都销毁并重新创建窗口?

【问题讨论】:

    标签: javascript ajax kendo-ui


    【解决方案1】:

    最后,这很简单。您只需要在重置之前立即清除 HTML,如下所示:

    $("#convert-window").html("");
    convertWindow.refresh({ type:"GET", url:url }).center().open();
    

    【讨论】:

    【解决方案2】:

    尝试不要在开始刷新时打开窗口,而是在刷新完成时打开。您需要做的是使用refresh 事件:

    function clickHandler(evt) {
        evt.preventDefault();
    
        var dta=this.dataItem($(evt.currentTarget).closest("tr"));
    
        converWindow.bind("refresh", function() {
            convertWindow.center().open();
        });
    
        convertWindow.refresh({ type: "GET", url: "CallMeConvert?AppointmentId="+dta.AppointmentId});
    }
    

    注意你其实不需要每次都bindrefresh事件,你可以在Window初始化的时候定义。

    var convertWindow = $("#my_window").kendoWindow({
        ...
        refresh : function () {
            convertWindow.center().open();
        }
    });
    

    【讨论】:

    • 我想投票赞成这个答案,但我的代表不足!这是多么愚蠢?!
    • 我可以,但我发现了一种更简单的方法,可以避免此解决方案出现问题,即它将对按钮单击的视觉响应延迟到 AJAX 请求完成之后。我已经自我回答了我所做的,并将在明天接受。但这是一个有用的答案,我想投赞成票。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-03
    • 2013-03-25
    • 1970-01-01
    • 1970-01-01
    • 2014-04-29
    • 1970-01-01
    相关资源
    最近更新 更多