app.run()的使用方法和位置?在模块定义之后,在app.config()之后还是在app.controller()之后?

我采用BreezeJS Angular Q,它询问是否可以在app.run()函数中运行某些代码。

评论

并在设置了任何角度模块.constants()之后

#1 楼

调用顺序如下:



app.config()

app.run() app.controller()
指令的链接功能(同样,如果找到的话)

这是一个简单的演示,您可以在其中观看每个人的执行情况(并尝试进行试验)。

从Angular的模块文档中:


运行块-在创建注入器后执行,并
用于启动
应用程序。只能将实例和常量注入运行块中。这是为了防止在应用程序运行时进一步进行系统配置。

运行块是Angular中与主要方法最接近的东西。 run
块是启动应用程序所需的代码。在配置所有服务并创建了
注入器之后,将执行
。运行块通常包含
难以进行单元测试的代码,因此,应在隔离的
模块中声明运行代码,以便可以在单元测试中将其忽略。


在身份验证期间使用运行块的一种情况。

评论


@KayakDave我不确定这不是主题,但与您上面提到的运行顺序有关,何时启动服务以及何时运行服务?

–珍妮
2014年7月28日在9:47

帮助您@jonnieM可能要晚一点,但是服务将根据首先需要的时间执行-即,如果您首先在run块中需要服务,它将在该块之前立即执行。对于提供程序,很烦人的是,它们将在配置块之前或之后运行-取决于它们在代码中的顺序。考虑到您唯一直接使用提供程序的时间是在配置阶段,所以这似乎不正确。

–扎克·塞斯(Zac Seth)
2014年9月26日16:21

嗨,我分叉并修改了您的小提琴样本,以显示工厂负载:jsfiddle.net/lorezz/4cxgpLqj/1

–劳雷兹
2015年2月16日在16:26



太棒了确切地说,app.constant()函数在所有内容之前都被调用...并且app.factory()和其他服务函数被“延迟”调用。换句话说,只有在控制器或其他服务需要注入时,Angular才使用提供的函数来创建服务实例,即使在应用初始化之后很长时间也是如此。

– Niko Bellic
2015年9月16日下午3:55

在Ionic项目中,默认情况下,运行在配置之前被调用。这是为什么 ?

– Rayjax
2015年9月20日上午10:04

#2 楼

具体来说...

如何以及在哪里使用app.run()?在模块定义之后或在
app.config()之后,在app.controller()之后?

其中:
在package.js中/packages/dashboard/public/controllers/dashboard.js
如何:
使它看起来像这样
var app = angular.module('mean.dashboard', ['ui.bootstrap']);

app.controller('DashboardController', ['$scope', 'Global', 'Dashboard',
    function($scope, Global, Dashboard) {
        $scope.global = Global;
        $scope.package = {
            name: 'dashboard'
        };
        // ...
    }
]);

app.run(function(editableOptions) {
    editableOptions.theme = 'bs3'; // bootstrap3 theme. Can be also 'bs2', 'default'
});