AngularJS:我如何获得$ location.path到模板

时间:2012-08-13 13:27:21

标签: angularjs

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

2 个答案:

答案 0 :(得分:91)

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

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

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

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

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

答案 1 :(得分:1)

另一种方法是使用更具语义和多才多艺的ui-router,然后在控制器retrieve the current state中,并将其存储在$scope

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