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