AngularJS依赖注入

wki上依赖注入的解释:Dependency injection是一种软件设计模式(简称DI),在这种模式下,一个或者更多的依赖(服务)被注入(或者通过引用传递)到一个独立的对象中,然后成为了该独立对象的一部分。

DI分离了客户端依赖本身行为的创建,使得程序设计模式变得松耦合,并遵循依赖反转和单一职责,域服务定位器模式形成了直接的对比,DI允许客户端了解客户端如何使用该系统找到依赖,可以这样理解:没有事你不要来找我,有事我去找你。

AngularJS提供了很好的依赖注入机制,以下5个核心组件用来作为依赖注入:value、factory、service、provider、constant。下面一一简单学习一下。

1、Value

Value是一个简单的JavaScript对象,用来向控制器传递值(配置阶段),如下例子:

var app=angular.modulr("demo",[]);

app.value("defaultinput",5);

app.controller("mycontroller",function($scope,CalcService,defaultinput){

$scope.number=defaultinput;

$scope.result=CalcService.square($scope.number);

$scope.square=function(){

$scope.result=CalcService.square($scope.number);

}

});

2、Factory

 factory是一个函数用于返回值。在service和controller需要时创建。通常我们使用factory函数来计算或者返回值。如下使用实例:

var app=angular.module("myapp",[]);

app.factory("MathService",function(){

var factory={};

factory.multiply=function(a,b){

return a*b;

}

return factory;

});

app.service("CalcService",function(MathService){

this.suqare=function(a){

return MathService.multiply(a,a);

}

});

3、provider

AngularJS中通过provider创建一个service、factory等,provider中提供一个factory方法get,用于返回valueservicefactory。

var app=angular.module("app",[]);

app.config(function($provider){

$provider.provider("MathService",function(){

this.$get=function(){

var factory={};

factory.multiply=function(a,b){

return a*b;

}

return factory;

}

});

});

4、constant

constant用来在配置阶段传递数值,但是要注意这个常量在配置阶段是不可用的。

  app.constant("configProgram","constant value");

原文地址:https://www.cnblogs.com/VARForrest/p/7827581.html