Мне нужен текущий путь от url в шаблоне (содержимое $location.path). Но не через контроллер, потому что у меня много контроллеров (и я не хочу дублировать объявление $scope.currentUrl = $location.path;
). Спасибо за совет.
AngularJS: как я могу получить $location.path для шаблона
Ответ 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;
...
}