AngularJS ng-repeat 不适用于 Promise.all

AngularJS ng-repeat not working with Promise.all

我遇到了一个奇怪的问题,一直无法弄清楚。我的 angular 代码如下所示

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>

这不起作用。但是,当我将其设为我的 angular 代码时

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

确实有效。这让我很困惑。

我看到的唯一区别是第一个 modelRunPageData 的大小是第二个有效的两倍。你能看到我在这里遗漏的东西吗?两个控制台都记录 return 正确的数据。第一个(不起作用,包含 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 数据绑定、异常处理、属性 监视等

有关详细信息,请参阅