AngularJs 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.module的话,那么就看个人能力了,稍微理解下即可知道主模块是哪个...
注意点:
angular.module("xxx",[]) // 声明一个module
angular.module("xxx") // 查找指定module
AngularJs angular.injector、angular.module的更多相关文章
- Angular - - angular.injector、angular.module
angular.injector 创建一个injector对象, 调用injector对象的方法可用于获取服务以及依赖注入. 格式:angular.injector(modules); modules ...
- angular.extend、angular.$watch、angular.bootstrap
1.angular.extend:依次将第二个参数及后续的参数的第一层属性(不管是简单属性还是对象)拷贝给第一个参数的第一层属性,即如果是对象,则是引用的是同一个对象,并返回第一个参数对象. 直接上代 ...
- angular.js 的angular.copy 、 angular.extend 、 angular.merge
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- AngularJs angular.forEach、angular.extend
angular.forEach 调用迭代器函数取每一项目标的集合,它可以是一个对象或数组.迭代器函数与迭代器(value.key)一起调用,其中值是一个对象属性或数组元素的值,而数组元素是对象属性的关 ...
- AngularJs angular.bind、angular.bootstrap、angular.copy
angular.bind 返回一个调用self的函数fn(self代表fn里的this).可以给fn提供参数args(*).这个功能也被称为局部操作,以区别功能. 格式:angular.bind(se ...
- AngularJs angular.uppercase、angular.lowercase、angular.fromJson、angular.toJson
angular.uppercase 将指定的字符串转换成大写 格式:angular.uppercase(string); string:被转换成大写的字符串. 使用代码: var str = &quo ...
- Angular - - angular.bind、angular.bootstrap、angular.copy
angular.bind 返回一个调用self的函数fn(self代表fn里的this).可以给fn提供参数args(*).这个功能也被称为局部操作,以区别功能. 格式:angular.bind(se ...
- Angular - - angular.forEach、angular.extend
angular.forEach 调用迭代器函数取每一项目标的集合,它可以是一个对象或数组.迭代器函数与迭代器(value.key)一起调用,其中值是一个对象属性或数组元素的值,而数组元素是对象属性的关 ...
- Angular - - angular.uppercase、angular.lowercase、angular.fromJson、angular.toJson
angular.uppercase 将指定的字符串转换成大写 格式:angular.uppercase(string); string:被转换成大写的字符串. 使用代码: var str = &quo ...
随机推荐
- 安装Ubuntu时的硬盘分区方案
如果你准备在硬盘里只安装Ubuntu一个操作系统的话,建议你采用一个“/”.一个“swap”和一个“/home”的三分区方案:/ :10GB-15GB.swap:物理内存小于或等于 512MB,建议分 ...
- struts2 Result Type四个常用转跳类型
Result的四个常用转跳类型分别为 Dispatcher 用来转向页面,是Struts的默认形式 Redirect 重定向到一个URL Chain 用来处理Action链 RedirectAc ...
- 发布新款博客皮肤SimpleMemory
感谢 sevennight 又为大家精心设计了一款简约风格的博客皮肤 —— SimpleMemory. 大家可以通过这篇博文感受一下实际的效果:开园子啦(浅谈移动端以及h5的发展) 如果您喜欢这款皮肤 ...
- 采访ServiceStack的项目领导Demis Bellot——第1部分(网摘)
ServiceStack是一个开源的.支持.NET与Mono平台的REST Web Services框架.InfoQ有幸与Demis Bellot深入地讨论了这个项目.在这篇两部分报道的第1部分中,我 ...
- 根本没有“JSON“对象这回事(读汤姆大叔博文记录)
1.字面量 (1)他们是固定的值,不是变量,让你从“字面上”理解脚本. (2)字符串字面量是由双引号("")或单引号('')包围起来的零个或多个字符串组成的. (3)对象字面量是由 ...
- Android闹钟开发与展示Demo
前言: 看过了不少安卓闹钟开发的例子,都是点到为止,都不完整,这次整一个看看. 一.闹钟的设置不需要数据库,但是展示闹钟列表的时候需要,所以需要数据库: public class MySQLiteOp ...
- 数据结构——动态链表(C++)
定义一个节点: [cpp] view plain copy print? #include <iostream> using namespace std; typedef int T; ...
- SVN常见图标的含义
项目视图 The Package Explorer view - 已忽略版本控制的文件.可以通过Window → Preferences → Team → Ignored Resources.来忽 ...
- hibernate的hql查询
1.概念介绍 1.Query是Hibernate的查询接口,用于从数据存储源查询对象及控制执行查询的过程,Query包装了一个HQL查询语句. 2.HQL是Hibernate Query Langua ...
- 控制器中获取store
在Controller中要获取View中的选中值我用[javascript] view plaincopyprint?var cmp = Ext.ComponentQuery.query('weldl ...