【发布时间】: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;
});
});
【问题讨论】:
-
它可以工作plnkr.co/edit/SHsffFMs1A66H2mk8N1m?p=preview(检查控制台)
-
是的,它有效,我在问是否有更清洁的方法来做到这一点,而无需做出单独的承诺。
标签: angularjs angularjs-scope promise