Angular - - angular.injector、angular.module
angular.injector
创建一个injector对象, 调用injector对象的方法可用于获取服务以及依赖注入。
格式:angular.injector(modules);
modules: Array 注入的模块(一个或多个)。
使用代码:

(function () {
angular.module("firstModule", [])
.service("firstService", function () {
this._log = function () {
console.log("Hello World!!!");
}
});
angular.module("Demo", [])
.controller("testCtrl", testCtrl);
function testCtrl() {
var injector = angular.injector(["firstModule"]);
injector.get("firstService")._log();//Hello World!!!
};
}());

在上面的代码里,我们没有在angular.module里对Demo模块进行firstModule模块的依赖注入,那么是不是就意味我们不能在 Dome模块里使用firstModule模块的函数了咯?其实并不然,Angular 有$injector服务来处理注入这件事情。我们这里的angular.injector也是依赖这个服务的,所以我们能在Dome模块里使用它引入 firstModule模块,然后调用firstModule模块里的方法。
这个方法是创建一个对象,这个对象大家可以打印出来看看,对象上有一些方法,具体关于他的描述将会在学习及翻译到$injector的时候详细的讲 解。我们这里用到的是get方法,使用这个方法获取到firstModule模块的service服务,然后再执行里面的_log函数。
angular.module
创建一个全局的可用于检索和注入的Angular模块。所有Angular模块(Angular核心模块或者第三方模块)想要在应用里实现,都需要使用这个注入机制。
格式:angular.module(name,[requires],[configFn]);
name : string 创建的模块名称。
[requires]: 字符串的数组 代表该模块依赖的其他模块列表,如果不依赖其他模块,则为空数组。
[configFn]:对该模块的一些配置。
使用代码:
angular.module("Demo", ["ui.router"],function(){//config })
angular.module是在1.3版本以后必须写上的,在刚使用Angular的时候下载的是1.2.8的版本,那会启动的时候只需要在 根节点的Dom元素上写个ngApp就好,在js里面可以直接function个controller,然后在对应的div写上ng- controller就好。然而1.3版本以后,要求必须定义模块名,用angular.module创建这个模块。
这里需要注意的是,第三个参数很少用,他其实就是和.config()一样,所以我们大多都使用.config()给模块做配置,这样的写法比较清晰明确,而且可以放在其他js里面配置,比较方便。
还有就是第二个参数,今天网上有小伙伴问我,为什么根据某个插件的使用教程文章说的依赖注入该插件的模块名会报错说模块名错误,对于这种问题,如果你需要使用某个插件,但你又不知道或者不确定他的模块名,你可以打开该插件的js代码,找到angular.module("XXX", []),这个XXX就是你需要注入到你模块里的模块名...
Angular - - angular.injector、angular.module的更多相关文章
- AngularJs angular.injector、angular.module
angular.injector 创建一个injector对象, 调用injector对象的方法可用于获取服务以及依赖注入. 格式:angular.injector(modules); modules ...
- 002——Angular 目录结构分析、app.module.ts 详解、以及 Angular 中创建组件、组件 详解、 绑定数据
一.目录结构分析 二. app.module.ts.组件分析 1.app.module.ts 定义 AppModule,这个根模块会告诉 Angular 如何组装该应用. 目前,它只声明了 AppCo ...
- 深入理解jQuery、Angular、node中的Promise
最初遇到Promise是在jQuery中,在jQuery1.5版本中引入了Deferred Object,这个异步队列模块用于实现异步任务和回调函数的解耦.为ajax模块.队列模块.ready事件提供 ...
- 【原创教程】一、Angular教程系列之认识angular
为什么我会准备写这个原创教程系列? 写下这个标题之后,看着屏幕上空白的内容区,不知从何下手,想说的似乎有很多,似乎又没啥说的.有时候就会陷入这种矛盾中,有时候就是这样,于是,我下定决心这一次一定要把这 ...
- angular之$watch、$watchGroup、$watchCollection
1,原型:$watch: function(watchExp, listener, objectEquality, prettyPrintExpression){}: 2,参数:watchExp(必须 ...
- angular.extend、angular.$watch、angular.bootstrap
1.angular.extend:依次将第二个参数及后续的参数的第一层属性(不管是简单属性还是对象)拷贝给第一个参数的第一层属性,即如果是对象,则是引用的是同一个对象,并返回第一个参数对象. 直接上代 ...
- angular4.0 安装最新版本的nodejs、npm、@angular/cli的方法
在使用ng项目的ui框架时,比如ng-zorro.angular Material,需要安装最新版本的@angular/cli: 配置ng-zorro框架 ng-zorro官网:https://ng. ...
- Web端主流框架,jquery、angular、react、vue
不得不说,前端技术发展非常迅速,时不多久就有一个新的东西冒出来,并且迅速膨胀发展,让旁观者眼花缭乱,让开发者目眩神迷,但总体上来说,这波互联网大浪潮带动了前端技术的大发展,给曾经那些苦苦挣扎于DOM操 ...
- angular之$broadcast、$emit、$on传值
文件层级 index.html <!DOCTYPE html> <html ng-app="nickApp"> <head> <meta ...
随机推荐
- myeclipse连接hadoop集群编程及问题解决
原以为搭建一个本地编程测试hadoop程序的环境很简单,没想到还是做得焦头烂额,在此分享步骤和遇到的问题,希望大家顺利. 一.要实现连接hadoop集群并能够编码的目的需要做如下准备: 1.远程had ...
- css背景图片、隐藏、指针、垂直居中、去除下划线、缩进、列表类型
<html><head lang="en"> <meta charset="UTF-8"> <title>< ...
- 贝塞尔曲线 & CAShapeLayer & Stroke 动画 浅谈
转载自:http://46aae4d1e2371e4aa769798941cef698.devproxy.yunshipei.com/qiaoqiaoqiao2014/article/details/ ...
- Android网络开发之OkHttp--基本用法实例化各个对象
1.实例化OkHttpClient对象,OkHttpClient包含了以下属性,以及set()和get()方法.但并没有包含具体的执行方法,详情见源码. //实例化OkHttpClent对象 priv ...
- 在线演示红黑树(javascript)
在线演示地址:http://sandbox.runjs.cn/show/2nngvn8w 有点遗憾,本想实现个很棒的功能,就是红黑树每次“变形”的时候,做个“快照”,“变形”了几次就“快照”几次.方便 ...
- python2.7 与 go1.2简单性能比较
过完年刚上班,项目还没有开始,对于即将到来的项目,想尝试是否可以找到一个开发效率接近python,运行效率接近静态语言的编程语言,选择基本就是scala和go,公司的技术组成基本都是c派的,scala ...
- create schema 与create database的区别
概论第四版中增加了create schema (第三版好像没有这个内容),但是却没有提到create database.相反目前在大多数DBMS中(如SQL Server2000.Mysql等)都有 ...
- 关于NOMINMAX这个预处理宏
标准库在<algorithm>头中定义了两个模板函数std::min() 和 std::max().通常用它可以计算某个值对的最小值和最大值.可惜在 Visual C++ 无法使用它们,因 ...
- C# DateTime变量不能赋null值
使用定时器的时候: DateTime aimtime=DateTime.Now.AddSeconds(1); CheckTimer() { if(DateTime.Now.CompareTo(aimt ...
- xCode中如何安装旧的模拟器
http://blog.csdn.net/cmengzhongren/article/details/50414493 这里给出如何把老版本的SDK加入到新的Xcode中的方法.其实很简单,就是将老版 ...