如何将Angular.js控制器中的参数传递给资源?

时间:2013-10-30 21:57:44

标签: angularjs

所以我有以下控制器,我注入一个常量,APIKEY。

myApp.controller('JobsCtrl', ['$scope', 'Jobs', 'APIKEY', function($scope, Jobs, apiKey) {
  var promise = Jobs.query().$promise;
  // do more awesome programming
}

我想将apiKey传递给以下服务,但无法弄清楚我的生活如何去做。

myApp.factory('Jobs', ['$resource', function ($resource) {
  return $resource('/someurl/:id', {id:'@id'}, {
    query: { method: 'GET', headers: {'Authorization': apiKey} }
  });
}]);

谢谢!

2 个答案:

答案 0 :(得分:7)

将您的Jobs $资源包含在另一个函数中:

myApp.factory('Jobs', ['$resource', function ($resource) {
  return function(apiKey){
    return $resource('/someurl/:id', {id:'@id'}, {
      query: { method: 'GET', headers: {'Authorization': apiKey} }
    });
  }
}]);

myApp.controller('JobsCtrl', ['$scope', 'Jobs', 'APIKEY', function($scope, Jobs, apiKey) {
  var promise = Jobs('MY_KEY').query().$promise;
  // do more awesome programming
}

答案 1 :(得分:2)

您还可以查看provide service API

$provide.constant('APIKEY', 'theHash');

然后将其注入控制器和服务(例如,当您创建服务并将依赖项注入其中时)。