Angularjs – 如何在服务中设置模块值?
发布时间:2020-12-17 08:14:29 所属栏目:安全 来源:网络整理
导读:我有一个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}) .succes
我有一个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,config) { // do something }); return p; } }]); // a service that uses uid to authenticate the request .factory('userPrefs' ['$http',uid) { return function() { return $http.post('/user/prefs',{"uid": uid}); } }]); 用户登录后,登录服务返回唯一的会话ID,并且我想设置其他服务调用的模块的uid值以引用。 我很确定上述代码将无法正常工作,因为我不能在模块的配置阶段使用一个值作为依赖。如何在登录服务中设置uid值并在模块中的其他服务中进行访问,或者如果不可能,我可以通过这些服务设置/获取哪些值?
作为原语的值并不意味着在应用过程中保存有更改的信息。您需要将UID值作为对象或标准服务。作为对象:
.value( 'uid',{} ); .factory('userPrefs' ['$http',uid) { // ... uid.id = response.data.uid; // ... }); 您可能还需要将所有与用户相关的内容放在一个单一的服务中,而不是三个。查看这个其他SO发布更多信息:http://stackoverflow.com/a/14206567/259038 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |