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