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