Javascript 无法访问指令控制器内的状态名称
由于某些原因,当我尝试从指令控制器访问$state.current.name时,它总是为空。指令是否在状态评估之前加载?如果是这样,是否有解决办法?我需要根据SPA中的状态显示正确的导航 例如,在我看来,我有:Javascript 无法访问指令控制器内的状态名称,javascript,angularjs,angularjs-directive,angularjs-scope,angular-ui-router,Javascript,Angularjs,Angularjs Directive,Angularjs Scope,Angular Ui Router,由于某些原因,当我尝试从指令控制器访问$state.current.name时,它总是为空。指令是否在状态评估之前加载?如果是这样,是否有解决办法?我需要根据SPA中的状态显示正确的导航 例如,在我看来,我有: 我的指示: angular.module('app') .directive('navigation', function($state){ return { restrict: 'E',
我的指示:
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'
}
}
})
});
angular.module('app')
.config(函数($stateProvider、$urlRouterProvider、$locationProvider){
$urlRouterProvider。否则('/home');
$stateProvider
.州(“家”{
url:“/home”,
观点:{
“标题”:{
模板:“主页”
},
“正文”:{
templateUrl:'app/components/home/homeView.html',
},
“导航”:{
templateUrl:'app/shared/navigation/homeNavBarView.html'
}
}
})
});
我设置它的方式是,我单独创建模块,然后在单独的文件中设置路由,指令也在单独的文件中。然后按顺序将它们加载到索引文件中。不确定这是否与此有关
我做错了什么?使用$state。
$current object
而不是$state。current
控制器是否也必须将$state作为参数?
只是一个猜测,因为我觉得一切都很可靠:
controller: function($state) {
alert($state.current.name);
}
作用域被注入到指令包装器中。它实际上没有什么不同。我会继续努力的。奇怪的是,你所做的对我来说是正确的。我设置它的方式是,我单独创建模块,然后在一个单独的文件中设置路由,指令也在一个单独的文件中。然后按顺序将它们加载到索引文件中。不确定这是否与it@NuGnojMik然而,角度框架的方式是DI。我正在处理同一个问题,可能有一种方法$watch或$observetheUI路由器的$state。我不知道如何解决它。没什么区别