gpt4 book ai didi

angularjs - Angular.js : how to call a service once for all the app controllers

转载 作者:行者123 更新时间:2023-12-01 03:37:40 26 4
gpt4 key购买 nike

我不知道这是否是 Angular 概念之一或是否可行,但我有一项调用用户信息(姓名、ID、年龄...)的服务:

.factory('me', function($resource, API_URL, $q) {
return {
getUser: function() {
var deferred = $q.defer();
var url = API_URL + 'api/me';
$resource(url)
.get(function(user) {
deferred.resolve(user);
}, function(response) {
deferred.reject(response);
});
return deferred.promise;
}
};
})

我在许多 Controller 中使用此服务来获取用户数据并使用它与其他http调用一起发送。例如在我的 newItemCtrl

.controller('newItemCtrl', function($scope, $http, API_URL, me) {

我像在许多其他 Controller 中一样调用了 me 服务

我想知道是否有一种方法可以只调用此服务一次并在所有 Controller 中使用它,而不是在每个 Controller 中使用 x 次

最佳答案

我一直对服务执行类似的操作,方法是在服务第一次返回后将值设置为服务。现在,一旦在服务中设置了数据,它将返回存储的用户数据,而不是向您的服务器发出请求。

service('myService', function($q, $http) {
this.data;
var self = this;

this.getMyData = function() {
if (angular.isDefined(self.data)) {
// use $q to return a promise
return $q.when(self.data)
}
return $http.get('myurl').then(function(resp) {
self.data = resp;
})
}

}

在您的 Controller 中,您可以调用myService.getMyData()

关于angularjs - Angular.js : how to call a service once for all the app controllers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31363017/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com