本文为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; }; }); });