Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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

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