Как определить служебную переменную как текущий маршрут?

0

У меня есть код...

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

    this.testValue = $location.path();

})

Это довольно просто. Мне нужен путь после http://www.whatever.com. Проблема в том, что я хочу это значение динамически. Я хочу это, когда я вхожу на страницу, и хочу это, когда я меняю маршруты и т.д.

Я пробовал использовать $routes.current Я пытался использовать $location.current,path() и ничего не работает. Я должен что-то упустить. Я читал документацию снова и снова, и я не уверен, как это сделать.

Общая цель - дать некоторые ссылки на моей странице определенного класса, когда их связанный маршрут активен. Я пытаюсь сделать это, создав функцию в контроллере, назначенном для ссылок, которые возвращают логическое значение, исходя из того, является ли переменная маршрута, которую я пытаюсь объявить, равна входному сигналу вышеупомянутой функции. Когда функция выводит значение true, я использую директиву ng-class чтобы добавить класс к правильной ссылке.

Как назначить testValue динамическому значению маршрута?

Теги:
routes
variables
service

1 ответ

0

Чтобы расширить комментарий @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(). Он не имеет много полезности, где бы вы ни вводили. Конечно, вы можете кодировать вокруг этого, но есть более эффективные механизмы, чтобы справиться с этим...

  • 0
    Пара вопросов. В ответе, связанном с @acicali, вторая функция зависела от «е». Что это такое и зачем мне это нужно? Во-вторых, это работает, но как вы получаете доступ к $ routeChangeSuccess, не добавляя его в качестве зависимости службы? В-третьих, если бы я сохранил результат этой функции в переменной, я бы сделал это, используя стандарт this.foobar = $ location.path (), или я бы не оказался в той же области видимости, потому что мы внутри $ функция rootScope?
  • 0
    Я отложу ответ на эти вопросы в угловой чат ... chat.stackoverflow.com/rooms/63378/angularjs

Ещё вопросы

Сообщество Overcoder
Наверх
Меню