Asynchronous 异步调用$q.all?

Asynchronous 异步调用$q.all?,asynchronous,ng-grid,Asynchronous,Ng Grid,我有以下一个案例。 一种ngGrid,它从异步服务中读取标签,因此标签是动态读取的,而不是硬编码的 我收集了所有异步调用,将标签数据提取到$q.all中,然后在.then部分提取它们的数据 但在某些情况下,标签不会显示在ngGrid中,因此这必须与异步调用和ngGrid同步有关 我应该如何对$q.all和it异步调用进行编码,以确保在将它们设置到ngGrid中时,它们包含正确的标签 伯丹 var deferred = $q.defer(); myService.getAttrib

我有以下一个案例。 一种ngGrid,它从异步服务中读取标签,因此标签是动态读取的,而不是硬编码的

我收集了所有异步调用,将标签数据提取到$q.all中,然后在.then部分提取它们的数据

但在某些情况下,标签不会显示在ngGrid中,因此这必须与异步调用和ngGrid同步有关

我应该如何对$q.all和it异步调用进行编码,以确保在将它们设置到ngGrid中时,它们包含正确的标签

伯丹

    var deferred = $q.defer();
    myService.getAttribute(key, function(label) {
      var result = label;
      deferred.resolve(result);
    });
    return deferred.promise;
  };

  /** Fetching labels asynchronously */
  $q.all(
      [   getLabelTxt('Form.Field1'),
          getLabelTxt('Form.Field2'),
          getLabelTxt('Form.Field3') ]).then(
      function(data) {
        $scope.setColDefs(data);
      });

  $scope.gridOptions = {
    data : 'dataModel',
    enableColumnResize : true,
    selectedItems : [],
    columnDefs : [
                  {
                    field : 'Field1',
                    displayName : ''
                  }, {
                    field : 'Field2',
                    displayName : ''
                  }, {
                    field : 'Field3',
                    displayName : ''                          
                  } ]
  };

  /** Setting values fetched from Asynch service */
  $scope.setColDefs = function(rows) {
    for (var i = 0; i < rows.length; i++) {
      if ($scope.gridOptions.columnDefs[i] !== undefined) {
        $scope.gridOptions.columnDefs[i].displayName = rows[i];
      }
    }
  };
var deferred=$q.deferred();
getAttribute(键、函数(标签){
var结果=标签;
延迟。解决(结果);
});
回报。承诺;
};
/**异步获取标签*/
$q.all(
[GetLabelText('Form.Field1'),
GetLabelText('Form.Field2'),
getLabelText('Form.Field3')])。然后(
功能(数据){
$scope.setColDefs(数据);
});
$scope.gridOptions={
数据:“数据模型”,
enableColumnResize:true,
selectedItems:[],
columnDefs:[
{
字段:'Field1',
显示名称:“”
}, {
字段:'Field2',
显示名称:“”
}, {
字段:'Field3',
显示名称:“”
} ]
};
/**设置从异步服务获取的值*/
$scope.setColDefs=函数(行){
对于(变量i=0;i
ng grid 2.x在列defs上放置一个
$watch
,如果它是一个字符串。否则它不会做任何更新。您可以这样定义ColumnDef:

$scope.columns=[
{field:'Field1'},
{field:'Field2'},
{field:'Field3'}
];
$scope.gridOptions.columnDefs='columns';
然后直接更新
$scope.columns

$scope.setColDefs=函数(行){
对于(变量i=0;i

这里有一个例子:plunker:

谢谢您的示例!