Kendo DataSource:如何取消更新请求

Tom*_*Tom 7 javascript jquery kendo-ui kendo-grid

我有一个kendo 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);
            }
Run Code Online (Sandbox Code Playgroud)

如果testVariable为false我取消更新,但我仍然看到ajax请求

http://localhost:61927/index.html with PUT method.
Run Code Online (Sandbox Code Playgroud)

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

git*_*tgo 5

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

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

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

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