没有合适的资源?快使用搜索试试~ 我知道了~
AngularJs Dependency Injection(DI,依赖注入)
0 下载量 98 浏览量
2020-10-21
14:43:33
上传
评论
收藏 81KB PDF 举报
温馨提示
试读
3页
本文主要介绍AngularJs Dependency Injection,这里整理了详细资料及示例代码有兴趣的小伙伴可以参考下
资源推荐
资源详情
资源评论
AngularJs Dependency Injection((DI,依赖注入),依赖注入)
本文主要介绍AngularJs Dependency Injection,这里整理了详细资料及示例代码有兴趣的小伙伴可以参考下
一、一、Dependency Injection(依赖注入)(依赖注入)
依赖注入(DI)是一个软件设计模式,处理代码如何得到它所依赖的资源。
关于DI更深层次的讨论,可以参观Dependency
Injection(http://en.wikipedia.org/wiki/Dependency_injection),Inversion of
Control(http://martinfowler.com/articles/injection.html),也可以参观软件设计模式的书。
1. DI in a nutshell(简说DI)
object或者function,只能够通过以下三种方式获取他们依赖的资源:
1) 可以通过new运算符创建依赖的资源。
2) 可以通过全局变量查找依赖的资源。
3) 可以通过参数传入依赖的资源。
1、2两种方式,并不是最佳的,因为它们对依赖关系进行hard code,这使得修改依赖关系时,不是不可能,但会变得比
较复杂。这对于测试来说尤其是个问题,通常在独立测试时,希望能够提供模拟的依赖资源。
第3种方法相对来说最可行,因为它去除了从组件(component)中定位依赖的责任。依赖仅仅交给组件就可以了。
function SomeClass(greeter) {
this.greeter = greeter
}
SomeClass.prototype.doSomething = function(name) {
this.greeter.greet(name);
}
上面的例子,SomeClass不用关心定位greeter这个依赖,它仅仅在运行时传递greeter。
这样是比较合适的,但它将获取依赖资源的责任交给了负责构建SomeClass的代码那里。
为了管理创建依赖的责任,每一个angular应用都有一个
injector(http://code.angularjs.org/1.0.2/docs/api/angular.injector)。injector是一个服务定位器,负责定位并创建依赖的资
源。
请求依赖,解决了hard code的问题,但它意味着injector需要贯穿整个应用。传递injector,会破坏Law of
Demeter(http://baike.baidu.com/view/823220.htm)。为了纠正这个问题,我们将依赖查找的责任转给injector。
上面说了那么多,看看下面经我修改过的例子,合并了原文的两个例子,分别在angular内、外使用inject:
<!DOCTYPE HTML>
<html lang="zh-cn" ng-app="MainApp">
<head>
<meta charset="UTF-8">
<title>injector</title>
</head>
<body>
<div ng-controller="MyController">
<button ng-click="sayHello()">Say Hello</button>
</div>
<script src="../angular-1.0.1.js" type="text/javascript"></script>
<script type="text/javascript">
//创建OtherModule这个module,相当于外部的module
var otherModule = angular.module("OtherModule", []);
//教injector如何创建"greeter"
//注意,greeter本身需要依赖$window
otherModule.factory("greeter", function ($window) {
//这里是一个工厂方法,负责创建greet服务
return {
greet:function (text) {
$window.alert(text);
}
};
});
//下面展示在非当前module中,通过injector调用greet方法:
//从module中创建新的injector
资源评论
weixin_38640985
- 粉丝: 8
- 资源: 965
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功