2015-06-30 3 views
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 динамическому значению маршрута?

+1

Это похоже на ваш ответ: http://stackoverflow.com/a/15355346/2208096 –

ответ

0

Для расширения comment@acicali «s, вы можете сделать что-то вроде:

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, вторая функция имела зависимость от «e». Что это и зачем мне это нужно? Во-вторых, это работает, но как вы получаете доступ к $ routeChangeSuccess, не добавляя его в качестве зависимости от службы? В-третьих, если бы я должен был сохранить результат этой функции в переменной, сделал бы я это, используя стандарт this.foobar = $ location.path(), или я не был бы в той же области, потому что мы находимся внутри $ Функция rootScope? – Allenph

+0

Я отложу ответ на эти вопросы в угловой комнате чата ... http://chat.stackoverflow.com/rooms/63378/angularjs – deostroll