AngularJS ng-repeat不与Promise.all一起工作



我有一个奇怪的问题,我一直无法弄清楚。我的角度代码看起来像这样

Promise.all([RunsAudit.getModelRuns({}), Runs.getModelRuns({})])
.then(function(result){
$scope.modelRunPageData = result[0].data.data.concat(result[1].data.data);
console.log($scope.modelRunPageData);
});

重要的 html 代码看起来像这样

<tr ng-repeat ="run in modelRunPageData | orderBy:predicate:reverse" >
<td><a href="#!runId/{{run.id}}" target="_blank">
{{run.custAppReferenceId}}</a></td>
<td> {{run.creditPolicy}}</td>
<td> {{run.creditPolicyVersion}}</td>
<td> {{run.creditServiceName}}</td>
<td> {{run.createdDate | date:'medium' }}</td>
</table>

这行不通。但是,当我将其作为我的角度代码时

Runs.getModelRuns({})
.then(function(result) {
$scope.modelRunPageData = result.data.data;
console.log($scope.modelRunPageData);
});

它确实有效。这让我非常困惑。

我看到的唯一区别是第一个模型RunPageData的大小是第二个工作的两倍。你能看到我在这里缺少的东西吗?两个控制台日志都返回正确的数据。第一个(不起作用,包含 Promise.all(((在日志中没有显示任何错误

Promise.all创建的 ES6 Promise 没有与 AngularJS 框架集成。而是使用$q.all

̶P̶r̶o̶m̶i̶s̶e̶.̶a̶l̶l̶(̶[̶R̶u̶n̶s̶A̶u̶d̶i̶t̶.̶g̶e̶t̶M̶o̶d̶e̶l̶R̶u̶n̶s̶(̶{̶}̶)̶,̶ ̶R̶u̶n̶s̶.̶g̶e̶t̶M̶o̶d̶e̶l̶R̶u̶n̶s̶(̶{̶}̶)̶]̶)̶ 
$q.all([RunsAudit.getModelRuns({}), Runs.getModelRuns({})])
.then(function(result){
$scope.modelRunPageData = result[0].data.data.concat(result[1].data.data);
console.log($scope.modelRunPageData);
});

AngularJS通过提供自己的事件处理循环来修改正常的JavaScript流。这将JavaScript分为经典和AngularJS执行上下文。只有在 AngularJS 执行上下文中应用的操作才能从 AngularJS 数据绑定、异常处理、属性监视等中受益。

有关详细信息,请参阅

  • AngularJS $q服务 API 参考 -$q.all

最新更新