AngularJS ui-router

在使用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

阅读 3.5k
1 个回答

文档中

app.run(function($rootScope, $state, $stateParams){
    $rootScope.$state = $state;
    $rootScope.$stateParams = $stateParams;
});

这段的意思是说,由于你在html中经常要用到这两个服务,那你可以放到$rootScope中。那样你就不用每个controller去注入了。
当你直接在html中用$state时,$state在当前$scope中找不到,就会往父scope查找,一直找到$rootScope中,所以你即使不注入也可以找到。

当然你也可以不用放在$rootScope中 ,而是每个controller自己去注入,我自己其实也是这么做的。另外建议你如果要用官方推荐的方式的话,不要改他的命名$rootScope.$state,$前缀一般是服务,这样放在$rootScope可以避免冲突。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题