加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

AngularJs 基础教程 ―― 依赖注入

发布时间:2020-12-17 09:53:48 所属栏目:安全 来源:网络整理
导读:本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍: AngularJs 基础教程 ―― 依赖注入 AngularJS依赖注入什么是依赖注入wiki上的解释是:依赖注入(DependencyInjection,简称DI)是一种软件设计模式,在这种模式下,一个或更多的依赖(或服务)被注入(或

本文为H5EDU机构官方HTML5培训教程,主要介绍:AngularJs 基础教程―― 依赖注入

AngularJS依赖注入
什么是依赖注入
wiki上的解释是:依赖注入(DependencyInjection,简称DI)是一种软件设计模式,在这种模式下,一个或更多的依赖(或服务)被注入(或者通过引用传递)到一个独立的对象(或客户端)中,然后成为了该客户端状态的一部分。
该模式分离了客户端依赖本身行为的创建,这使得程序设计变得松耦合,并遵循了依赖反转和单一职责原则。与服务定位器模式形成直接对比的是,它允许客户端了解客户端如何使用该系统找到依赖
一句话---没事你不要来找我,有事我会去找你。
AngularJS提供很好的依赖注入机制。以下5个核心组件用来作为依赖注入:
value
factory
service
provider
constant
value
Value是一个简单的javascript对象,用于向控制器传递值(配置阶段):
//定义一个模块
varmainApp=angular.module("mainApp",);

//创建value对象"defaultInput"并传递数据
mainApp.value("defaultInput",5);
...

//将"defaultInput"注入到控制器
mainApp.controller('CalcController',function($scope,CalcService,defaultInput){
$scope.number=defaultInput;
$scope.result=CalcService.square($scope.number);

$scope.square=function(){
$scope.result=CalcService.square($scope.number);
}
});
factory
factory是一个函数用于返回值。在service和controller需要时创建。
通常我们使用factory函数来计算或返回值。
//定义一个模块
varmainApp=angular.module("mainApp",);

//创建factory"MathService"用于两数的乘积providesamethodmultiplytoreturnmultiplicationoftwonumbers
mainApp.factory('MathService',function(){
varfactory={};

factory.multiply=function(a,b){
returna*b
}
returnfactory;
});

//在service中注入factory"MathService"
mainApp.service('CalcService',function(MathService){
this.square=function(a){
returnMathService.multiply(a,a);
}
});
...
provider
AngularJS中通过provider创建一个service、factory等(配置阶段)。
Provider中提供了一个factory方法get(),它用于返回value/service/factory。
//定义一个模块
varmainApp=angular.module("mainApp",);
...

//使用provider创建service定义一个方法用于计算两数乘积
mainApp.config(function($provide){
$provide.provider('MathService',function(){
this.$get=function(){
varfactory={};

factory.multiply=function(a,b){
returna*b;
}
returnfactory;
};
});
});

点击进入JS强化教程

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读