1

我有這樣的事情工作角加入體類視狀態

<body ng-app="ELT" ng-class="{'mapBody': $state.includes('map')}" ng-controller="mainCtrl"> 

所以,很顯然我試圖做的就是添加一個類「mapBody」的時候,狀態圖

和我控制器一個這樣的

.controller('mainCtrl', ['$scope','$state',function ($scope,$state) { 
    'use strict'; 
    $scope.$state = $state; 
    }]) 

有沒有更好的方法來做到這一點?不喜歡這樣一個事實,我不得不爲這個事情準備一個新的控制器,再加上它在html中有很多邏輯。

+0

嘗試檢查ui-sref-active指令... http://angular-ui.github.io/ui-router/site/#/api/ui.router.state.directive:ui-sref-active – 2015-02-06 15:05:14

回答

0

根據Radim Kohler更好的方法是,您可以使用ui-sref-active指令。

到類主動添加到您的元素時,UI路由器狀態匹配使用

HTML

<body ng-app="ELT" ui-sref-active="mapBody" ng-controller="mainCtrl"> 
    <a ui-sref="app"></a> 
</body> 

每當基礎ui-sref是當前狀態,那麼如果將適用mapBody類機構。

Example這裏

編輯

你的情況,你想一個類追加到身體取決於狀態, 所以在這種情況下將無法正常工作使用ui-sref-active。因爲身體可以包含幾個ui-sref並且至少有一個會被滿足,所以類將總是附加到身體上。 我相信你現在的做法是正確的。 但我想建議一個更改, 而不是每次分配$state到控制器。在角度run階段只做一次。

//it will assign a state inside $rootScope and it will get available on each page 
app.run(function($rootScope, $state) { 
    $rootScope.$state = $state; 
}); 

上面的代碼將更清晰,它將避免每次在範圍內分配$ state。

謝謝。

+0

試圖瞭解用戶,所以我需要在我的身體上做這樣的事情ui-sref =「map」ui-sref-active =「mapBody」 – StevieB 2015-02-06 15:20:22

+0

因此,爲了使它工作,它需要一個空身體標籤下的鏈接?似乎有點奇怪 – StevieB 2015-02-06 15:23:48

+0

沒有..我給了例子如何做到這一點..在你的頁面有多少ui-sref在那裏? – 2015-02-06 15:26:07