javascript - AngularJS - 传递给 Controller ​​的状态名称不起作用

标签 javascript angularjs

我是 Angular 的新手,我不明白为什么这不起作用。

当我调用 {{$state.current.name}}在我看来,它工作得很好,但一旦我尝试将它传递给我的 Controller ,状态就会“丢失”。

这是我的设置:

模块:

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'
                };
            })
})();

Controller :

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

在这一点上,我对为什么我可以在 View 中获取状态名称但在我的 Controller 中获取不到状态名称一无所知。

最佳答案

嗯,ui-router docs假设您可以使用 $statecurrent 属性访问当前状态的配置对象,因此绝对不需要将任何内容附加到 $rootScope。我刚刚测试了一些类似的东西(为了便于阅读而做了一些简化):

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

Chrome 控制台的结果是:

Object {url: "/some", templateUrl: "app/some.html", controller: "SomeCtrl", name: "some"}

如您所见,所有信息都应随名称一起提供。

关于javascript - AngularJS - 传递给 Controller ​​的状态名称不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29636572/

相关文章:

javascript - Kendo 多选下拉列表不显示值

javascript - javascript的继承

javascript - 如何使用 ava 忽略非测试文件?

json - Mongoid 嵌入式文档和 Rails 强参数不起作用

css - 悬停时更改 md-icon 和 md-button

javascript - 什么时候应该使用继承作用域,什么时候不应该使用?

javascript - 在nodejs中包含简单的javascript

javascript - 在javascript中复制和扩展全局对象

javascript - Youtube API - 将视频淡入到 div - 在 Opera 10 中不起作用

javascript - 选择下拉菜单中的 css 中心默认值