首页 > AngularJS ui-router

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


文档中

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可以避免冲突。

【热门文章】
【热门文章】