在使用ui-router
的时候,会有这样的写法
var app = angular.module('app', ['ui.router']);
app.run(function($rootScope, $state, $stateParams){
$rootScope.$state = $state;
$rootScope.$stateParams = $stateParams;
});
app.controller('myCtrl', function($scope, $state, $stateParams){
//这里面是获取$stateParams上的一些参数
//或者进行路由跳转什么
});
我不太理解的就是$rootScope.$state = $state
和 $rootScope.$stateParams = $stateParams
这2个操作,以及在controller
里面为什么可以注入$state
, $stateParams
文档中
这段的意思是说,由于你在html中经常要用到这两个服务,那你可以放到$rootScope中。那样你就不用每个controller去注入了。
当你直接在html中用$state时,$state在当前$scope中找不到,就会往父scope查找,一直找到$rootScope中,所以你即使不注入也可以找到。
当然你也可以不用放在$rootScope中 ,而是每个controller自己去注入,我自己其实也是这么做的。另外建议你如果要用官方推荐的方式的话,不要改他的命名$rootScope.$state,$前缀一般是服务,这样放在$rootScope可以避免冲突。