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

时间:2015-06-30 05:28:46

标签: javascript angularjs variables service routes

我有一些代码......

spa.service("testService", function($route, $location, $routeParams) {

    this.testValue = $location.path();

})

这非常简单。我想要http://www.whatever.com之后的路径。这个问题是我想要动态地获取该值。当我进入页面时我想要它,当我改变路线等时我想要它。

我已尝试使用$routes.current我已尝试使用$location.current,path()但无效。我不得不遗漏一些东西。我一遍又一遍地阅读文档,我不知道如何实现这一目标。

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

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

1 个答案:

答案 0 :(得分:0)

要展开@acicali comment,您可以执行以下操作:

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

普兰克:http://plnkr.co/edit/ov5lxGdEBPcwNeq9lfxT?p=preview

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