Angularjs – 如何在服务中设置模块值? - 代码日志

Angularjs – 如何在服务中设置模块值?

我有一个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});
    }
  }]);

用户登录后,登录服务返回唯一的会话ID,并且我想设置其他服务调用的模块的uid值以引用。

我很确定上述代码将无法正常工作,因为我不能在模块的配置阶段使用一个值作为依赖。如何在登录服务中设置uid值并在模块中的其他服务中进行访问,或者如果不可能,我可以通过这些服务设置/获取哪些值?

作为原语的值并不意味着在应用过程中保存有更改的信息。您需要将UID值作为对象或标准服务。作为对象:

.value( 'uid', {} );

.factory('userPrefs' ['$http', 'uid', function($http, uid) {
  // ...
  uid.id = response.data.uid;
  // ...
});

您可能还需要将所有与用户相关的内容放在一个单一的服务中,而不是三个。查看这个其他SO发布更多信息:http://stackoverflow.com/a/14206567/259038

http://stackoverflow.com/questions/15796924/angularjs-how-do-i-set-module-values-in-a-service

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:Angularjs – 如何在服务中设置模块值?