【问题标题】:Angular: using promise in service to store data once, cacheAngular:在服务中使用承诺存储一次数据,缓存
【发布时间】:2014-04-29 23:44:14
【问题描述】:

我正在尝试使用一项服务来存储我的 API 中的数据,并且只在不同的页面上调用一次 API。现在我有一个解决方案与控制器一起访问服务的承诺并在回调中设置范围变量,但我想知道是否有办法让这个更干净。我在另一个线程中看到 $http.get 返回一个承诺,因此应该有一种方法可以利用它,但是当我尝试在以下问题中使用 yohairosen 的答案时,它没有正确设置我的变量:@ 987654321@

这是我的代码

/app/scripts/services/team.js

app.factory('Team', function($http, $q) {
  var deferred = $q.defer();

  $http.get('/api/teams').success(function(teams){
    deferred.resolve(teams);
  });

  return {
    promise: deferred.promise,
  }
});

/app/scripts/controllers/teams.js

app.controller('TeamsCtrl', function ($scope, $routeParams, Team) {
  Team.promise.then(function(data){
    $scope.teams = data;
  });
});

【问题讨论】:

标签: angularjs angularjs-scope promise


【解决方案1】:

通过 Promise,您可以链接 then 调用。

app.factory('Team', function($http) {

  return {
    promise: $http.get('/api/teams').then(function (response) {
      return response.data;
    })
  }
});

这种表示法不仅更短,而且还传播了失败($q.reject)。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2013-09-15
  • 2013-04-21
  • 1970-01-01
  • 2015-08-12
  • 2017-11-22
  • 1970-01-01
相关资源
最近更新 更多