【问题标题】:How do i use $location in a normal function我如何在正常功能中使用 $location
【发布时间】:2015-06-08 10:13:32
【问题描述】:

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

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

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

【问题讨论】:

  • 考虑做相反的事情,将普通的 JS 东西集成到你的 Angular 应用程序中。
  • 你可以请 elobarte
  • 呃,好吧,就像我说的,在你的 Angular 控制器中使用你的函数……简而言之,不要试图用 Angular 来“增强”一个普通的 JS 应用程序。从一开始就构建一个 Angular 应用程序。如果您能花点时间写下“请您详细说明一下”,那就太好了。

标签: javascript angularjs angularjs-injector


【解决方案1】:

您需要使用angular.injector,它将从外部提供和访问提供者。

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

更多信息请参考SO Answer

更新

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

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

【讨论】:

  • 我没有任何模块
  • 什么是身体。我认为你错过了一个点
  • 这也给了我错误,因为找不到 go 函数 angular.element('body').injector().get('$location').go("/error/404")。替换();
  • @aWebDeveloper $location 确实有去事件..你想做吗$state.go
  • still go is undefined
【解决方案2】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2020-10-29
    • 1970-01-01
    • 2019-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-01
    • 1970-01-01
    相关资源
    最近更新 更多