2016-11-17 46 views
0

我使用的角度,如下圖所示做URL路由在我的web應用程序,如下圖所示的UI-Router如何從模板中檢查AngularJS控制器?

$stateProvider.state('myState1', { 
    url: '/state1', 
    templateUrl: 'state1.html', 
    controller: 'MyState1Ctrl' 
    }); 

$stateProvider.state('myState2', { 
    url: '/state2', 
    templateUrl: 'state2.html', 
    controller: 'MyState2Ctrl' 
    }); 

在每兩個模板文件state1.htmlstate2.html的,我有我的導航欄指令: <myapp-navigation-bar></myapp-navigation-bar>

但我希望導航欄的行爲有所不同,因爲它的天氣是myState1myState2。我如何從導航欄(或其模板)的控制器內檢測它處於哪種狀態?

+1

A [服務](https://docs.angularjs.org/guide/services)應該可以幫助您在控制器/組件之間共享數據。 –

+0

我認爲最簡單的方法是在這個指令中添加一個屬性來告訴導航欄當前處於哪個狀態。 –

回答

0

按照documentation,你可以這樣做,

.controller('MyState1Ctrl', function($scope, $state) { 
    $scope.statecurrent = $state.current; 
}); 
+0

從導航欄的控制器(而不是狀態的控制器)中,如何判斷我是否在State1或State2? –

+0

你的意思是maincontroller? – Sajeetharan

0

您還可以檢查這樣的 -

.controller('MyState1Ctrl', function($scope, $state) { 
     if ($state.is("myState1")) { 
      //Add Logic 
     } 
}); 
+0

從導航欄的控制器(不是狀態控制器)中,我如何判斷我是處於State1還是State2? –