AngularJS将变量传递给服务

时间:2014-01-20 08:31:01

标签: angularjs variables service controller resources

我从angularJS开始,我不明白如何将变量从控制器推送到服务。 我尝试使用$ rootScope,但变量的值未定义

这是我的服务:

technoServices.factory('Config',['$rootScope','$resource',
  function($rootScope,$resource,token){

return $resource('../../rest/config',null,{
    get: {
        method:'GET',
        headers:{'X-Token':""+$rootScope.headers},
        isArray:false}
});
}]);

这是我的控制器:

var technoControllers = angular.module('technoControllers', []);

technoControllers.controller('loginCtrl', ['$scope','$rootScope', 'Techno',function($scope,$rootScope, Techno) {
$scope.getXtoken = function (user,psw){
    $scope.config = Techno.post({username:user,password:psw},function(response,headers){
        $scope.status= response.status;
        $rootScope.headers = headers('X-Token');
        if($rootScope.headers != null){
            $scope.log = true;
        }else{
            $scope.log = false;
        }
    })};

}

  ]);

technoControllers.controller('configCtrl', ['$scope', 'Config', function($scope, Config) {

$scope.getConfig = function (){
$scope.maConfig = Config.get();

}

正如您所看到的,我需要我的第一个服务的响应头中的变量在我的seconde服务的头请求中。我该怎么办?

1 个答案:

答案 0 :(得分:0)

您可以使用其他服务作为共享服务,它将具有值并注入控制器和服务。 代码片段就是这样。

technoServices.factory('Shared',
  function(){
var Shared={};
Shared.setValue=function(header){
Shared.header = header;
}
Shared.getValue=function(){
return Shared.header;
}
return Shared;
});

在控制器中你可以用作

technoControllers.controller('loginCtrl', ['$scope','$rootScope', 'Techno',function($scope,$rootScope, Techno, Shared) {
$scope.getXtoken = function (user,psw){
    $scope.config = Techno.post({username:user,password:psw},function(response,headers){
        $scope.status= response.status;
        Shared.setValue(headers('X-Token'));
        //$rootScope.headers = headers('X-Token');
        if($rootScope.headers != null){
            $scope.log = true;
        }else{
            $scope.log = false;
        }
    })};

}

  ]);

您可以在Config中注入共享服务以获取数据

technoServices.factory('Config',['$rootScope','$resource','Shared'
  function($rootScope,$resource,token,Shared){

return $resource('../../rest/config',null,{
    get: {
        method:'GET',
        //headers:{'X-Token':""+$rootScope.headers},
        headers:{'X-Token':""+Shared.getValue()},
        isArray:false}
});

}]);

相关问题