你可以将一个promise绑定到Angular中的scope属性吗?

时间:2016-01-29 17:02:03

标签: angularjs

关于这个blog,我读到了:

  

...请注意,我们正在为范围存储承诺。这与实际列表不同。 AngularJS会自动将其解析为实际返回的列表,并将其显示在生成的HTML中。

这是否意味着我可以这样做:

angular.module('app', []).service('Data', function($q) {
  return {
   getItems: function() {
     return $q.when(['cat', 'dog']);
   }
  }
})
.controller('MyController', function(Data, $scope) {
  $scope.items = Data.getItems();
});

而不是这个?

.controller('MyController', function(Data, $scope) {
   Data.getItems().then( function(result) {
     $scope.items = result;
   });
});

如果是,那么它的文档在哪里?我搜索过文档无济于事。

我尝试了plunkr,却无处可去。

我还发现this SO question提到了 async 指令。同样,我很难找到关于此的任何文档。

我是否将Angular1与Angular2混淆了?

2 个答案:

答案 0 :(得分:1)

也许?如果您愿意,可以像这样访问plunkr中的值:

i in items.$$state.value

这是一个更新的plunkr,它将通过超时模拟http请求:

https://plnkr.co/edit/aWfDWJWIJnsnXLpTEIol?p=preview

答案 1 :(得分:1)

你曾经能够用Angular 1.2做到这一点(这似乎是一个错误)。 1.3和更新版本要求您在绑定之前解包承诺。

修改:此问题可能重复Angular JS: how to bind to promises