AngularJS - 传递给控制器​​的状态名称不起作用

时间:2015-04-14 20:14:03

标签: javascript angularjs

我是棱角分明的新手,我无法弄清楚为什么这不起作用。

当我在我的视图中调用{{$state.current.name}}时,它完全正常,但是当我尝试将其传递给控制器​​时,状态会“丢失”。

这是我的设置:

模块:

angular.module('app', ['ui.router'])

        .run(function ($rootScope, $state, $stateParams) {
            $rootScope.$state = $state;
            $rootScope.$stateParams = $stateParams;
        })
        //followed by boilerplate ui router setup

查看:

<home-nav-bar></home-nav-bar>

指令:

angular.module('app')
            .directive('homeNavBar', function () {
                return {
                    restrict: 'E',
                    templateUrl: 'homeNavBarView.html',
                    controller: 'navCtrl'
                };
            })
})();

控制器:

angular.module('app')
            .controller('navCtrl', function ($state, $scope) {
                   alert($state.current.name); //returns empty
            });
})();

此时我无法理解为什么我可以在视图中获取州名,但不能在我的控制器中获取...

1 个答案:

答案 0 :(得分:4)

好吧,ui-router docs表示您可以使用current的{​​{1}}属性访问当前状态的配置对象,因此绝对不需要附加$state的任何内容。我刚刚测试了一些东西(简化了一点以便于阅读):

$rootScope

Chrome控制台的结果是:

angular.module('myApp')
.controller('SomeCtrl', function ($scope, $state) {  
  console.log($state.current);
});

因此,您可以看到所有信息都应与名称一起提供。