52

我需要模板中 url 的当前路径($location.path 的内容)。但不是通过控制器,因为我有很多控制器(而且我不想重复声明$scope.currentUrl = $location.path;)。感谢您的建议。

4

2 回答 2

92

AngularJS 模板只能查看范围内可用的内容,因此您需要以某种方式将 $location 服务放入范围内。AngularJS 应用程序中有一个始终可用的范围,称为 $rootScope,因此它可以用于您的用例。

您可以做的是使用模块的 run() 方法在 $rootScope 中公开 $location:

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

这将使“位置”在所有模板中都可用,因此稍后您可以在模板中执行以下操作:

Current path: {{location.path()}}
于 2012-08-13T13:57:32.727 回答
1

另一种方法是使用更具语义和通用性的 ui-router,然后在控制器中检索当前状态,并将其存储在$scope

app.controller('MyCtrl', ['$scope', '$state', function MyCtrl($scope, $state) {
  $scope.state = $state.current.name;
  ...
}
于 2014-10-24T18:08:07.320 回答