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