如何将服务变量定义为当前路由

How to define service variable as current route?

本文关键字:路由 定义 变量 服务      更新时间:2023-09-26

我有一些代码。。。

spa.service("testService", function($route, $location, $routeParams) {
    this.testValue = $location.path();
})

这很简单。我想要http://www.whatever.com之后的路径。这样做的问题是,我希望动态地获得该值。当我进入页面时,我想要它,当我改变路线时,我需要它,等等。

我试过使用$routes.current,我试过用$location.current,path(),但都不起作用。我一定是错过了什么。我已经一遍又一遍地阅读了文档,我不确定如何实现这一点。

总的目标是当我的页面上的一些链接的相关路线处于活动状态时,为它们提供特定的类。我试图通过在分配给链接的控制器中创建一个函数来实现这一点,该函数根据我试图声明的路由变量是否等于上述函数的输入来返回布尔值。当函数输出true时,我使用ng-class指令将类附加到正确的链接。

如何将testValue分配给路由的动态值?

要扩展@acicali的评论,可以执行以下操作:

app.service('spasvc', function($rootScope, $location){
  $rootScope.$on('$routeChangeSuccess', function(e) {
    console.log('Route Change:', $location.path());
  });
});

Plunk:http://plnkr.co/edit/ov5lxGdEBPcwNeq9lfxT?p=preview

然而,只有当您有改变服务内部状态的计划时,这才有意义。您可以指定一些变量来存储$location.path()的值。无论在哪里注入,它都没有多大用处。当然,你可以围绕这一点进行编码,但有更好的机制来处理。。。