由于某种原因,当我尝试从指令控制器访问时,$ state.current.name始终为空。指令是否在状态评估之前加载?如果是这样,有没有解决这个问题?我需要根据SPA中的状态显示正确的导航
例如,在我看来,我有:<navigation></navigation>
我的指示:
angular.module('app')
.directive('navigation', function($state){
return {
restrict: 'E',
controller: function() {
alert($state.current.name);
}
}
});
我的路线:
angular.module('app')
.config(function ($stateProvider, $urlRouterProvider, $locationProvider) {
$urlRouterProvider.otherwise('/home');
$stateProvider
.state('home', {
url: '/home',
views: {
"title": {
template: "<title>Home</title>"
},
"body": {
templateUrl: 'app/components/home/homeView.html',
},
"navigation" : {
templateUrl: 'app/shared/navigation/homeNavBarView.html'
}
}
})
});
我设置它的方式是我单独创建模块,然后我在一个单独的文件中设置路由,并且该指令也在一个单独的文件中。然后将它们按顺序加载到索引文件中。不确定这是否与它有关。
我做错了什么?
答案 0 :(得分:0)
您的控制器是否还必须将$ state作为参数? 只是一个猜测,因为一切看起来都很坚固:
controller: function($state) {
alert($state.current.name);
}
答案 1 :(得分:-2)
使用$ state。$current object
代替$state.current