我正在使用Angular的UI-Router,如下所示在我的网络应用中进行网址路由,如下所示:
$stateProvider.state('myState1', {
url: '/state1',
templateUrl: 'state1.html',
controller: 'MyState1Ctrl'
});
$stateProvider.state('myState2', {
url: '/state2',
templateUrl: 'state2.html',
controller: 'MyState2Ctrl'
});
在两个模板文件state1.html
,state2.html
的每一个中,我都有导航栏指令:<myapp-navigation-bar></myapp-navigation-bar>
。这是导航栏的控制器:
raptorApp.controller('NavigationCtrl', function($scope){
var self = this;
$scope.$watch(function() {return "something";}, function (objVal) {
console.log('Hello from NavigationCtrl!');
},true);
});
但我希望导航栏的行为与myState1
或myState2
中的天气不同。如何在NavigationCtrl
内检测到它处于哪种状态?
答案 0 :(得分:1)
我们总是可以将任何内容放入$scope
和watch
中。甚至是$state
服务及其current.name
。像(只是草稿)
raptorApp.controller('NavigationCtrl', function($scope, $state){
var self = this;
$scope.state = $state;
$scope.$watch("state.current.name", function (objVal) {
console.log('current state name changed');
},true);
});
注意:永远不要忘记在销毁
上删除此类手表但是使用UI-Router ..有更好的方法。更好的方法:
因此,我们可以拥有一个父状态,其中包含一个名为 'myapp-navigation-bar'
的视图,并且可以由每个州填充...具有不同的实现。有关如何和示例