【发布时间】:2014-04-10 22:23:23
【问题描述】:
我有一个带有defaultController 的Angular JS 应用程序,它控制着应用程序的标题。然后我有一些其他控制器用于每个视图。视图加载在<main> 中。我使用$routeProvider 使用以下代码加载视图:
myapp.config(['$routeProvider',
function($routeProvider) {
$routeProvider.
when('/login', {
templateUrl: 'templates/login.html',
controller: 'loginController'
}).
when('/dashboard', {
templateUrl: 'templates/dashboard.html',
controller: 'dashboardController'
}).
...
当加载的视图是仪表板时,我试图在标题内显示一个 LOGOUT 按钮,如果加载的视图是登录视图,则隐藏它。为了做到这一点,我在defaultController 上使用了$location 对象,并使用ng-class 从LOGOUT 按钮中正确添加和删除类。
只有一个问题:$location 在我第一次加载页面时为我提供了正确的路径,但是在我更改视图(由$routeProvider 更改)之后,该变量不再更新,所以当我实际上在 /#/dashboard 上,$location.url 仍在 /login 上。这里是控制器代码:
controllers.controller('defaultController', ['$scope', 'ipCookie', '$location', function($scope, ipCookie, $location) {
$scope.url = $location.url();
...
我也尝试了$window.location.hash,结果相同。
有什么想法吗?
编辑:在接受答案之后,这是我在defaultController 上添加的内容,以使其正常工作
$scope.$on("$locationChangeSuccess", function() {
$scope.url = $location.url();
});
【问题讨论】:
-
试试 location.hash 并在你使用它的地方导入 $location。
标签: angularjs angularjs-scope angularjs-routing