2015-06-23 59 views
0

通過單擊鏈接我更改視圖,這重新實例化我的控制器。這就是爲什麼activeMenu是空的。如果創建服務並將當前活動的菜單存儲在那裏,它將不會爲空。如何創建服務來執行此操作? ?這是我的第一次,我需要創建的服務,這是我plnkr ... http://plnkr.co/edit/gJko3umteXXEye7o9StR?p=preview 問題是菜單上,當用戶點擊從佈局則該重新實例化我的控制器如何創建將存儲當前活動菜單的服務?

佈局:

<li class="dropdown"> 

<ul class="submenu"> 
<li><a href="../Account/#/PersonalInfo" ng-click="SetActiveMenuForPersonalInfo();">@Translate("MY_ACCOUNT")</a></li> 
<li ng-click="GetLoader();"><a href="#">@Translate("SETTINGS")</a></li> 
<li ng-click="GetLoader();"><a href="../Account/#/Tickets">@Translate("TICKET_HISTORY")</a></li> 
<li ng-click="GetLoader();"><a href="../Account/#/Transactions">@Translate("TRANSACTIONS")</a></li> 
<li ng-click="GetLoader();"><a href="#">@Translate("BONUS_ACCOUNT")</a></li> 
<li><a href="#">@Translate("ODDS_REPRENSETATION")</a></li> 
<li><a href="#">@Translate("HELP")</a></li> 
<li><a href="javascript:document.getElementById('logoutForm').submit()">@Translate("LOGOUT")</a></li> 
    </ul> </li> 

回答

1

你可以這樣說:

app.service('navigation', function() { 
    this.activeLink = ''; 
}); 

app.controller('MainCtrl', function($scope, navigation) { 
    $scope.activeMenu = 'Home'; 
    $scope.activeLink = navigation.activeLink; 

    $scope.changeActiveLink = function(link) { 
    $scope.activeLink = link; 
    this.activeLink = link; 
    } 
}); 

該服務是一個單,它是按照您的應用程序負載intatiaded一次,所以它將繼續diffent狀態O之間分配的值你的應用程序。

如果你不會存儲一個簡單的字符串值而是一個對象,那麼你可以使它變得更聰明 - 這樣我們就可以保留對服務值的引用而不是值本身,我們不會需要同時設置$scope.activeLink = link;this.activeLink = link;明確:

app.service('navigation', function() { 
    this.active = { 
    link: '', 
    menu: 'Home' 
    }; 
}); 

app.controller('MainCtrl', function($scope, navigation) { 
    $scope.activenav = navigation.active; 

    $scope.changeActiveLink = function(link) { 
    navigation.active.link = link; 
    } 
}); 

只是別忘了要在HTML代碼中必要的修改在第二種情況下

相關問題