我是棱角分明的新手,我无法弄清楚为什么这不起作用。
当我在我的视图中调用{{$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
});
})();
此时我无法理解为什么我可以在视图中获取州名,但不能在我的控制器中获取...
答案 0 :(得分:4)
好吧,ui-router
docs表示您可以使用current
的{{1}}属性访问当前状态的配置对象,因此绝对不需要附加$state
的任何内容。我刚刚测试了一些东西(简化了一点以便于阅读):
$rootScope
Chrome控制台的结果是:
angular.module('myApp')
.controller('SomeCtrl', function ($scope, $state) {
console.log($state.current);
});
因此,您可以看到所有信息都应与名称一起提供。