app.run()
的使用方法和位置?在模块定义之后,在app.config()
之后还是在app.controller()
之后?我采用BreezeJS Angular Q,它询问是否可以在
app.run()
函数中运行某些代码。#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'
});
评论
并在设置了任何角度模块.constants()之后