3

我的代码有以下内容:

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 开头的两行在做什么。他们需要吗?

4

3 回答 3

3

此评论取自项目 github 页面上的示例源代码:

向 $rootScope 添加对 $state 和 $stateParams 的引用非常方便,这样您就可以从应用程序中的任何范围访问它们。例如, 只要“contacts.list”或其后代之一处于活动状态,<li ng-class="{ active: $state.includes('contacts.list') }">就会将<li> 其设置为活动状态。

你可以在这里查看

于 2013-11-29T09:14:06.083 回答
1

我不认为这是标准代码。我看到这些被添加到您的 rootScope 的唯一原因是它便于在任何地方的 html 视图中进行绑定。否则,如果您想绑定到 $state 或 $stateParams 的某些属性,则必须将$tateand$stateParams服务注入控制器。理想情况下,这应该注入需要此服务的控制器中。

如果您删除它,任何依赖于它的 html 绑定都会失败。在 html 视图中搜索带有 name 的绑定,$state然后$stateParams您会找到它们的使用位置。

于 2013-09-02T12:16:11.517 回答
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

于 2014-07-16T19:29:27.443 回答