2014-01-09 32 views
0

我在Angular中有一個簡單視圖,帶有一個菜單。菜單中的每個元素都是指向同一頁的特定部分的鏈接。我使用$ snchorScroll來實現這一點,它的工作正常。但是,當我點擊任何菜單項時,它的樣式應該變爲活動,所以它被標記爲藍色。

我不明白爲什麼這隻有當我點擊兩次相同的鏈接。我的意思是,第一次點擊菜單項時,它的類沒有設置爲活動狀態。這是第二次。

這不適用於我的本地代碼。當我試圖發展一名笨拙的人來解決這個問題時,我感到很驚訝,這個掠奪者正在完美地工作。

所以,請找到工作正常的plunker,但是,任何想法,它如何不在我的開發環境中工作?

Plunker:http://plnkr.co/edit/6dElweMizpPHD1ZphksX

UPDATE:在發展,如果我刪除調用$ anchorScroll風格切換工作。

回答

0

由於ng-click動作改變活動樣式是在scrollTo(帶有$ anchorScroll)之前執行的,所以當$ an​​chorScroll執行時我意識到活動樣式被覆蓋,因爲它重載了頁面和控制器。所以,我所做的是將活動樣式存儲在服務中,並在控制器重新加載時加載它。然後完美地工作。

我的控制器:

.controller ('AboutCtrl', function ($scope, $location, $anchorScroll, AboutService) {    

     var setActiveClass = function() { 

      $scope.whatIsItStyle = ""; 
      $scope.howIsPossibleStyle = ""; 
      $scope.teamStyle = ""; 

      if ($scope.step == "whatIsIt") { 
       $scope.whatIsItStyle = "active"; 
      } else if ($scope.step == "howIsPossible") { 
       $scope.howIsPossibleStyle = "active"; 
      } else if ($scope.step == "team") { 
       $scope.teamStyle = "active"; 
      } 
     }; 

     $scope.step = AboutService.getStep();  
     setActiveClass();  


     $scope.setStep = function(step) {    
      $scope.step = step; 
      AboutService.setStep(step); 
      setActiveClass(); 
     };        
    }) 
相關問題