设置$ rootScope的目的是什么。$ state = $ state;与angular-ui ui-router?

时间:2013-09-02 12:09:19

标签: angularjs

我的代码包含以下内容:

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开头的两行是怎么回事。他们需要吗?

3 个答案:

答案 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)"

https://github.com/angular-ui/ui-router/wiki/Quick-Reference#note-about-using-state-within-a-template