如何在正常函数中使用$ location

时间:2015-06-08 10:13:33

标签: javascript angularjs angularjs-injector

我有一个角度应用程序,其中一半是角js,一半是像ajax的平面js。那么我如何在该函数中使用$ location而不将其作为函数参数传递。

function x() {
   $location.path('/error').replace();
}

现在我想知道如何在普通的javascript函数中使用$location。基本上我有一个从至少20个地方调用的功能。在那个函数中,我希望做替换状态。

2 个答案:

答案 0 :(得分:1)

您需要使用angular.injector来提供外部提供商和访问提供商。

angular.injector(['app']).get('$location')

有关详细信息,请参阅此SO Answer

<强>更新

您可以直接在元素上应用注入器,这将允许访问该模块中存在的所有服务。

angular.element('body').injector().get('$location'); //body can replace by your element.

答案 1 :(得分:0)

我建议将该功能包装为服务。并将myFunction和x更改为合理的名称。将应用更改为您的应用名称。

function x($location) {
   $location.path('/error').replace();
}

x.$inject = ['$location'];

angular.module('app').function('myFunction', x);