【问题标题】:Create ui-grid with async call使用异步调用创建 ui-grid
【发布时间】:2017-02-10 15:15:58
【问题描述】:

我正在尝试使用一些 DDL 过滤器(从获取数据)创建一个 ui-grid。如果我尝试使用 async: false,一切都会完美运行。这是电话:

var Documents = [];

var solutionSetColumn = {};
var solutionSetFilters = [];

LoadData = function () {
        Documents = [];
        $.ajax({
            type: "POST", url: url,
                success: function (data) {
                Documents = data.d;
            },
            error: function (err) {
            }
        });
    }
}

$.ajax({
    type: "POST", url: url,
    success: function (data) {
        solutionSetColumn = { field: 'SolutionSet', displayName: 'Solution Set', width: 190, filter: { type: uiGridConstants.filter.SELECT, selectOptions: data.d } };
    },
    error: function (err) {
        solutionSetColumn = { field: 'SolutionSet', displayName: 'Solution Set', width: 190 }
    }
});       

LoadData();

gridOptions = {
    enableHorizontalScrollbar: 2, 
    enableVerticalScrollbar: 0,
    enableFiltering: true,
    data: Documents,
    columnDefs: [
        { field: 'Name', displayName: 'Nome File', width: 200 },
        solutionSetColumn
    ]
}

$scope.gridOptions = gridOptions;
});

如何在没有像 colDef undefined 这样的 gridOption 错误的情况下获得所有异步?显然没有setTimeout!谢谢

【问题讨论】:

    标签: javascript jquery angularjs asynchronous


    【解决方案1】:

    您需要将您的 $scope.gridOptions(和选项定义)移动到 ajax 调用的成功路径中。

    【讨论】:

    • TypeError: Cannot read property 'data' of undefined,显然,调用总是异步的……
    • 问题是,你有多个异步调用。您可以将每个都放入其父级(如我建议的那样),或使用承诺。见stackoverflow.com/questions/15299850/…
    猜你喜欢
    • 2019-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-02
    • 2020-07-18
    相关资源
    最近更新 更多