Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法访问指令控制器内的状态名称_Javascript_Angularjs_Angularjs Directive_Angularjs Scope_Angular Ui Router - Fatal编程技术网

Javascript 无法访问指令控制器内的状态名称

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',

由于某些原因,当我尝试从指令控制器访问$state.current.name时,它总是为空。指令是否在状态评估之前加载?如果是这样,是否有解决办法?我需要根据SPA中的状态显示正确的导航

例如,在我看来,我有:

我的指示:

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。我不知道如何解决它。没什么区别