【问题标题】:How to access the global variable in Ajax sucess of kendo grid update?如何在剑道网格更新的Ajax成功中访问全局变量?
【发布时间】:2016-09-08 08:47:22
【问题描述】:

目前正在使用 AngularJS 和 Kendo 开发 Web 应用程序。当我保存内联编辑网格需要隐藏我的保存按钮并想要显示添加按钮。对于显示和隐藏,我使用*ngIf。在这个类中我定义了public isAddEdit: Boolean; 我无法访问成功范围内的变量。

update: function (options) {
    $.ajax({
        url: HttpUrl.UpdateBlog,
        contentType: "application/JSON",
        type: "POST",
        data: JSON.stringify(options.data.models),
        success: function (result) {
            options.success(result);
            this.isAddEdit = false;
            $('#save').remove();
            $('#grid').data('kendoGrid').dataSource.read();
        },
    })

这是我的看法

<div id ="btndiv" class="col-sm-12">
     <button *ngIf="!isAddEdit" id="addblog" class="k-button grid-top-button-override k-primary add-button page-name" (click)="addStock()">{{'Addblog' | translate}}</button>
     <button *ngIf="isAddEdit" id ="save" class="k-button grid-top-button-override k-primary save-button page-name" (click)="clicksave()">{{'Save' | translate}}</button>         
</div>

<div class="row grid-override">
     <div id="grid"></div>
</div>

【问题讨论】:

    标签: ajax angular kendo-grid


    【解决方案1】:

    我认为this 与 AJAX 回调函数有关,因此您没有访问所需的变量。 用箭头函数试试:

           success:(result) => {
                options.success(result);
                this.isAddEdit = false;
                $('#save').remove();
                $('#grid').data('kendoGrid').dataSource.read();
           },
    

    【讨论】:

    • 我认为使用 ng-show, ng-hide 来隐藏或显示按钮更合适,因为 ng-if 所做的是删除 DOM 元素。另外我认为没有刷新视图,因此它不会读取变量的值。尝试在视图中的某处调试变量。
    • 您是否将console.log(this.isAddEdit) 包裹在setTimeout(){}. 中,否则会在您得到响应之前被调用。
    • 是的,值已更改。我在得到响应之前读取了该值。没有刷新可能会导致问题。
    • 这是一个很小的例子,但也许你遗漏了什么:jsfiddle.net/yhabibyhabib/Lvc0u55v/9271
    • 我的回答对你有帮助吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-25
    • 2022-01-04
    • 2014-09-08
    • 1970-01-01
    • 2014-12-16
    相关资源
    最近更新 更多