我的代码包含以下内容:
var app = angular.module('app', ['admin', 'home', 'questions', 'ui.compat', 'ngResource', 'LocalStorageModule']);
app.run(['$rootScope', '$state', '$stateParams', function ($rootScope, $state, $stateParams) {
$rootScope.$state = $state;
$rootScope.$stateParams = $stateParams;
$state.transitionTo('home');
}]);
有人可以解释一下以$ rootScope开头的两行是怎么回事。他们需要吗?
答案 0 :(得分:3)
此评论来自项目github页面上的示例源代码:
将$ state和$ stateParams的引用添加到$ rootScope非常方便 这样您就可以从应用程序的任何范围访问它们。例如,
<li ng-class="{ active: $state.includes('contacts.list') }">
将设置<li>
每当'contacts.list'或其中一个后代处于活动状态时激活。
您可以查看here。
答案 1 :(得分:1)
我不认为这是标准代码。我看到这些被添加到rootScope的唯一原因是为了方便在html视图中随处绑定。否则,如果要绑定到$ state或$ stateParams的某些属性,则必须将$tate
和$stateParams
服务注入控制器。理想情况下,这应该注入需要此服务的控制器中。
如果删除它,任何依赖它的html绑定都会失败。搜索名称为$state
和$stateParams
的绑定的html视图,您可以找到它们的使用位置。
答案 2 :(得分:0)
它可以将$ state和$ stateParams值传递给根控制器并能够访问它们
示例使用:
ng-click="$state.transitionTo('stateName', $stateParams)"