2

我使用angularJS與引導來設計我的應用程序的導航。我定義了一個主控制器,並在主控制器內部使用ng-view屬性調用不同的頁面視圖,然後這些單獨的視圖擁有自己的控制器。ngClass不更新類

我正在使用ng-class屬性將活動類添加到我的鏈接,但它不起作用。表達式評估爲true或false,但ng-class不會更新元素上的class =「active」。

在我的主頁,我有以下的代碼 -

<section ng-controller="dashBoardCtrl" class="container"> 
     <section class="row"> 
      <h1>DME DashBoard | <small>WFM HeadCount</small> </h1> 
     </section> 

     <section class="row"> 
      <ul class="nav nav-tabs"> 
       <li role="presentation" ng-class="{active: {{path=='/'}}}"><a ng-href="#/">Home</a></li> 
       <li role="presentation" ng-class="{active: {{path=='/login'}}}"><a ng-href="#/login">Login</a></li> 
      </ul> 
     </section> 

     <section ng-view></section> 
    </section> 

這是路線是如何上的應用程序配置 -

dmeDash.config(['$routeProvider', function ($routeProvider) { 
    $routeProvider 
     .when('/', { 
      templateUrl: '/views/home.html', 
      controller: 'homePageCtrl' 
     }) 
     .when('/login', { 
      templateUrl: '/views/login.html', 
      controller: 'loginCtrl' 
     }) 
     .otherwise({ 
      redirectTo: '/' 
     }); 
}]); 

的dashBoardCtrl有下面的代碼 -

dmeDashControllers.controller('dashBoardCtrl', ['$scope','$location', function($scope, $location) { 

    $scope.path = $location.$$path; 

    $scope.$watch('path',function(n,o) { 

    }) 

}]); 

主頁控制器有以下代碼 -

dmeDashControllers.controller('homePageCtrl', ['$scope','$location', function($scope, $location) { 

    $scope.$parent.path = $location.$$path; 
}]); 

登錄頁面控制器具有下面的代碼 -

dmeDashControllers.controller('loginCtrl', ['$scope','$location', function($scope, $location) { 

    $scope.$parent.path = $location.$$path; 

}]); 

當我從首頁點擊登錄頁面主動類不是從主頁鏈接刪除,而不是應用於登錄頁面不過,當我在firebug中查看代碼時,表達式在頁面更改時計算爲true或false。

當我在單個頁面上刷新時,ng-class正常工作,但在使用超鏈接時不能正常工作,請建議。

回答

4

模板上的語法錯誤。它應該是:

<li role="presentation" ng-class="{'active': path==='/'}"><a ng-href="#/">Home</a></li> 

正如風格指南嘗試使用的===,而不是簡單的,因爲type coercion==。或者再次測試truthy or falsy