AngularJS在工厂中使用$ location

时间:2015-07-13 15:12:46

标签: angularjs rest angular-resource

我创建了一个使用$ resource工厂的工厂,我想根据我当前的URL自定义传递给$ resource的url参数。 这是我的代码示例:

MyApp.factory("provider_services", ['$resource', function($resource) {
  var factory = {};
  var ProviderService = $resource("/providers/:provider/provider_services/", { format: 'json', provider: "pro" });
  factory.services = ProviderService.query();

  return factory;
}])

我目前的网址是:somedomain.com/providers/pro/services /

我想从url中取出“pro”部分(理想情况下可以是其他任何东西)并将它在提供者参数中传递给资源(在我当前的示例中,您可以看到它是硬编码的)。 类似的东西:

cur_provider = {get the current value from the url}
var ProviderService = $resource("/providers/:provider/provider_services/", { format: 'json', provider: cur_provider });

*我知道我可以用某种方式使用$ location,但我似乎无法在我的provider_services工厂中访问它。

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用$ routeParams来执行此操作。它看起来像这样:

angular.module('app').controller("ExampleController", ['$resource', '$routeParams', 'SomeService',
    function($resource, $routeParams, SomeService) {
        //The id here is whatever you name your route variable.
        cur_provider = $routeParams.provider;
        var ProviderService = $resource("/providers/:provider/provider_services/", { format: 'json', provider: cur_provider });
    }
]);