Angularjs - 如何在服务中设置模块值?
Posted
技术标签:
【中文标题】Angularjs - 如何在服务中设置模块值?【英文标题】:Angularjs - how do I set module values in a service? 【发布时间】:2013-03-25 16:25:20 【问题描述】:我有以下 Angular 应用的服务模块。
angular.module('rs.services', [])
.value('uid', null)
.factory('login', ['$http', 'uid', function($http, uid)
return function(user, pass)
var p = $http.post('/login', "user": user, "pass": pass)
.success(function(data, status, headers, config)
// set uid
)
.error(function(data, status, headers, config)
// do something
);
return p;
]);
// a service that uses uid to authenticate the request
.factory('userPrefs' ['$http', 'uid', function($http, uid)
return function()
return $http.post('/user/prefs', "uid": uid);
]);
用户登录后,login
服务返回一个唯一的会话 id,我想设置模块的uid
值以供其他服务调用参考。
我很确定上面的代码不会工作,因为我不能在模块的配置阶段使用值作为依赖项。如何在login
服务中设置uid
值并在模块内的其他服务中访问它,或者如果这不可能,我如何创建一个可以通过这些服务设置/获取的值?
【问题讨论】:
【参考方案1】:原语值并不意味着保存在应用程序过程中发生变化的信息。您需要将 UID 值设为 object 或标准服务。作为一个对象:
.value( 'uid', );
.factory('userPrefs' ['$http', 'uid', function($http, uid)
// ...
uid.id = response.data.uid;
// ...
);
您可能还希望将所有与用户相关的内容放在一个服务中,而不是三个。有关更多信息,请参阅此其他 SO 帖子:https://***.com/a/14206567/259038
【讨论】:
以上是关于Angularjs - 如何在服务中设置模块值?的主要内容,如果未能解决你的问题,请参考以下文章
AngularJS - 在 ng-repeat 中设置默认值 [重复]