Ui网格异步调用AngularJS中未定义的gridApi

Ui网格异步调用AngularJS中未定义的gridApi,angularjs,ajax,ui-grid,Angularjs,Ajax,Ui Grid,你好,我有一个ui网格问题。当我对Api执行同步调用时,代码将通过$scope.gridOptions中的onRegisterApi 但是如果我将调用放在异步中,它不会传入onRegisterApi,并且$scope.gridApi未定义,因此我松开了过滤器 以下是我对GridOptions的定义: $scope.gridOptions = { colDef = colDef,

你好,我有一个ui网格问题。当我对Api执行同步调用时,代码将通过
$scope.gridOptions
中的
onRegisterApi

但是如果我将调用放在异步中,它不会传入
onRegisterApi
,并且
$scope.gridApi
未定义,因此我松开了过滤器

以下是我对GridOptions的定义:

 $scope.gridOptions = {                     
                    colDef = colDef,
                    data = $scope.rowCollection,
                    enableGridMenu: true,
                    enableFiltering: true,
                    onRegisterApi: function (gridApi) {
                        debugger; //Don't pass here with async call
                        $scope.gridApi = gridApi;

                    }
                }
下面是我的api调用的开始:

$.ajax({
            url: Api.getHost() + "url/" + $scope.currentObjectType,
            async: true,
            type: "GET",
            datatype: "jsonp",
            contentType: "application/json",
            data: { page: $scope.page, number: $scope.number },
            beforeSend: function (xhr) {
                xhr.setRequestHeader('Authorization', 'Bearer ' + Api.getToken());
            },
但是如果我将调用放在异步中,它不会传入onRegisterApi,并且$scope.gridApi未定义,因此我松开了过滤器

之所以会发生这种情况,是因为您使用的是3d party Ajax调用,而不是角度方式
$http

选择1 因此,请尝试使用
$timeout
如下:

// ...
$timeout(function(){
   $scope.gridOptions.data = YourNewData; 
})
选项2:使用
$http

我已经找到了解决方案,我不得不在ajax调用中声明网格选项

改用
$http
服务。这里有一些例子
 $http({method: 'GET', url:URL}).then(function (result) {
      $scope.gridOptions.data = result.data;                            
 }, function (result) {

 });