AngularJS: как я могу получить $location.путь к шаблону


Мне нужен текущий путь от url в шаблоне (содержимое $location.путь.) Но не через контроллер, потому что у меня много контроллеров (и я не хочу дублировать декларации $scope.currentUrl = $location.path;). Спасибо за совет.

2   51   2012-08-13 17:27:20

2 ответа:

шаблон AngularJS может видеть только то, что доступно в области, поэтому вам нужно будет каким-то образом поместить $location service в область. Существует одна область, которая всегда доступна в приложении AngularJS под названием $rootScope, поэтому ее можно использовать для вашего варианта использования.

что вы могли бы сделать, это использовать метод run () модуля для предоставления $location в $rootScope:

var myApp = angular.module('myApp', []).run(function($rootScope, $location) {
    $rootScope.location = $location;
});

это сделало бы "местоположение" доступным во всех шаблонах, чтобы позже вы могли сделать это в своем шаблон:

Current path: {{location.path()}}

альтернативой является использование более семантического и универсального ui-router, затем в контроллер, восстановить текущее состояние, и хранить его на $scope:

app.controller('MyCtrl', ['$scope', '$state', function MyCtrl($scope, $state) {
  $scope.state = $state.current.name;
  ...
}