【问题标题】:Kendo DataSource: how cancel an update requestKendo DataSource:如何取消更新请求
【发布时间】:2014-06-09 19:34:24
【问题描述】:

我有一个剑道 UI 网格和一个数据源。当我调用 Update 方法时,我测试了一个变量,如果条件为 false,我不想发送请求。

目前我有:

 $scope.MySource = new kendo.data.DataSource({
  update: {
            url: function (lista) {
                if (testVariable== true) {           
                    testVariable= false;
                    return "api/Liste/PutLista/" + lista.Id
                }
                else {
                    $scope.MySource.cancelChanges();
                }
            },
            type: "PUT",
            dataType: "json",
            beforeSend: function (req) {
                var auth = $window.sessionStorage.token;
                req.setRequestHeader('Authorization', 'Bearer ' + auth);
            }

如果testVariable 为假,我会取消更新,但我仍然看到一个 ajax 请求

http://localhost:61927/index.html with PUT method.

如果testVariable 为假,我如何阻止请求?

【问题讨论】:

  • 您必须在调用 MySource.sync() 或用于触发更新的任何函数之前检查 testVariable。将该逻辑放在 url 函数中不会停止 ajax 请求。
  • 我在编辑内联网格时点击更新按钮触发更新......所以我必须在按钮上的点击事件之前拦截?
  • 不,还好你也可以在点击事件之后拦截。试试我的答案,看看它是否适合你。

标签: javascript jquery kendo-ui kendo-grid


【解决方案1】:

您可以在点击更新后立即拦截它。在您的剑道网格中,使用保存事件。每次按下更新时都会调用此事件。

save: function (e) {
    if (testVariable === false) {           
        e.preventDefault();         //prevent default action that kendo does
        $scope.MySource.cancelChanges();
    }
}

如果变量为 false,那么您将阻止默认操作并执行您想要的任何操作(例如取消更改)。如果为真,它将只采取默认操作并保存您的行。

只需确保变量 testVariable 在此事件中可访问(全局变量,或您可以在此事件中设置的局部变量)。

【讨论】:

    【解决方案2】:

    url 函数不是检查您是否真的要发出请求的地方。我敢肯定,一旦它走到了那一步,就没有办法取消了。

    您可能想尝试改用requestStart 事件。在某些情况下,从事件处理程序返回false 将取消请求(但并非在所有情况下,这可能是一个剑道错误)。

    否则,您只需覆盖 DataSource 实例上的 sync() 函数,进行检查,然后在需要时调用基本实现。

              $scope.MySource.sync = function () {
                if(customChecksPass) {
                    kendo.data.DataSource.fn.sync.apply(this, arguments);
                }
              };
    

    我也刚刚重新阅读了您的问题并意识到您正在使用网格。网格小部件有一个 save event,您可以绑定到它,并从那里取消对 DataSource 的调用。

    【讨论】:

    • 这将是一个不依赖网格事件的好选择。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-26
    相关资源
    最近更新 更多