Asynchronous 异步调用$q.all?
我有以下一个案例。 一种ngGrid,它从异步服务中读取标签,因此标签是动态读取的,而不是硬编码的 我收集了所有异步调用,将标签数据提取到$q.all中,然后在.then部分提取它们的数据 但在某些情况下,标签不会显示在ngGrid中,因此这必须与异步调用和ngGrid同步有关 我应该如何对$q.all和it异步调用进行编码,以确保在将它们设置到ngGrid中时,它们包含正确的标签 伯丹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
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:谢谢您的示例!