【问题标题】:Can you bind a promise to a scope property in Angular?你可以在 Angular 中将 Promise 绑定到范围属性吗?
【发布时间】:2016-01-29 17:02:02
【问题描述】:

在这个blog我读到:

...请注意,我们正在将一个 Promise 存储到作用域中。这与实际列表不同。 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 混淆了?

【问题讨论】:

    标签: angularjs


    【解决方案1】:

    您过去可以使用 Angular 1.2 做到这一点(这似乎是一个错误)。 1.3 和更新的版本要求你在绑定之前解开 Promise。

    编辑:这个问题可能是重复的Angular JS: how to bind to promises

    【讨论】:

      【解决方案2】:

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

      i in items.$$state.value
      

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

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

      【讨论】:

      • 那里有聪明的把戏,虽然我更想知道这是否是我错过的 Angular 的一个特性。干杯。
      猜你喜欢
      • 1970-01-01
      • 2015-12-07
      • 2015-07-09
      • 2017-08-29
      • 2016-06-29
      • 1970-01-01
      • 1970-01-01
      • 2018-05-10
      • 2012-12-11
      相关资源
      最近更新 更多