AngularJS 依赖注入详解及示例代码  更新时间:2016年08月17日 15:26:46   作者:bbflys   本文主要介绍AngularJS 依赖注入的知识,这里整理了相关的基础知识,并附示例代码和实现效果图,有兴趣的小伙伴可以参考下 依赖注入是一个在组件中给出的替代了硬的组件内的编码它们的依赖关系的软件设计模式。这减轻一个组成部分,从定位的依赖,依赖配置。这有助于使组件可重用,维护和测试。 AngularJS提供了一个至高无上的依赖注入机制。它提供了一个可注入彼此依赖下列核心组件。 值 工厂 服务 提供者 常值 值 值是简单的JavaScript对象,它是用来将值传递过程中的配置相位控制器。 //define a module var mainApp = angular.module(“mainApp”, []); //create a value object as “defaultInput” and pass it a data. mainApp.value(“defaultInput”, 5); … //inject the value in the controller using its name “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); } }); 工厂 工厂是用于返回函数的值。它根据需求创造值,每当一个服务或控制器需要。它通常使用一个工厂函数来计算并返回对应值 //define a module var mainApp = angular.module(“mainApp”, []); //create a factory “MathService” which provides a method multiply to return multiplication of two numbers mainApp.factory(‘MathService’, function() { var factory = {}; factory.multiply = function(a, b) { return a * b } return factory; }); //inject the factory “MathService” in a service to utilize the multiply method of factory. mainApp.service(‘CalcService’, function(MathService){ this.square = function(a) { return MathService.multiply(a,a); } }); … 服务 服务是一个单一的JavaScript包含了一组函数对象来执行某些任务。服务使用service()函数,然后注入到控制器的定义。 //define a module var mainApp = angular.module(“mainApp”, []); … //create a service which defines a method square to return square of a number. mainApp.service(‘CalcService’, function(MathService){ this.square = function(a) { return MathService.multiply(a,a); } }); //inject the service “CalcService” into the controller 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); } }); 提供者 提供者所使用的AngularJS内部创建过程中配置阶段的服务,工厂等(相AngularJS引导自身期间)。下面提到的脚本,可以用来创建,我们已经在前面创建MathService。提供者是一个特殊的工厂方法以及get()方法,用来返回值/服务/工厂。 //define a module var mainApp = angular.module(“mainApp”, []); … //create a service using provider which defines a method square to return square of a number. mainApp.config(function($provide) { $provide.provider(‘MathService’, function() { this.$get = function() { var factory = {}; factory.multiply = function(a, b) { return a * b; } return factory; }; }); }); 常量 常量用于通过配置相位值考虑事实,值不能使用期间的配置阶段被传递。 mainApp.constant(“configParam”, “constant value”); 例子 下面的例子将展示上述所有指令。 testAngularJS.html AngularJS Dependency Injection AngularJS Sample Application Enter a number: X2 Result: {{result}} 结果 在Web浏览器打开textAngularJS.html。看到结果如下。 以上就是对AngularJS 依赖注入的资料整理,后续继续补充相关资料,谢谢大家对本站的支持! 您可能感兴趣的文章: 详解AngularJS中的依赖注入机制 详解Angularjs中的依赖注入 AngularJS学习笔记之依赖注入详解 AngularJS 依赖注入详解和简单实例 AngularJS之依赖注入模拟实现 自学实现angularjs依赖注入 Angular 4依赖注入学习教程之简介(一) AngularJS学习第二篇 AngularJS依赖注入 AngularJS应用开发思维之依赖注入3 深入理解Angular中的依赖注入 AngularJS 依赖注入 相关文章 Angular.Js之Scope作用域的学习教程 这篇文章主要给大家分享了关于Angular.Js之Scope作用域的学习教程 ,文中通过多个示例代码介绍的非常详细,相信对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。 2017-04-04 AngularJS表格样式简单设置方法示例 这篇文章主要介绍了AngularJS表格样式简单设置方法,结合实例形式分析了AngularJS结合bootstrap针对表格样式的相关设置技巧,需要的朋友可以参考下 2017-03-03 angular 实现同步验证器跨字段验证的方法 几乎每个web应用都会用到表单,那么验证器就是必不可少的东西,这篇文章主要介绍了angular 实现同步验证器跨字段验证的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 2019-04-04 Angular8路由守卫原理和使用方法 这篇文章主要给大家介绍了关于Angular8路由守卫原理和使用方法的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Angular8具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧 2019-08-08 ng-alain表单使用方式详解 这篇文章主要介绍了ng-alain表单使用方式详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 2018-07-07 angularJS提交表单(form) 这篇文章主要介绍了angularJS提交表单(form)的方法和示例,需要的朋友可以参考下 2015-02-02 深入理解angular2启动项目步骤 本篇文章主要介绍了深入理解angular2启动步骤 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 2017-07-07 AngularJS ionic手势事件的使用总结 本篇文章主要介绍了AngularJS手势事件的使用总结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 2017-08-08 Angularjs中使用Filters详解 本文给大家总结了下在Angularjs的模板、控制器、或者服务中使用Filters的方法,有需要的小伙伴可以参考下 2016-03-03 AngularJS 单选框及多选框的双向动态绑定 本篇文章主要介绍了AngularJS 单选框及多选框的双向动态绑定的相关知识。具有很好的参考价值。下面跟着小编一起来看下吧 2017-04-04 最新评论

依赖注入是一个在组件中给出的替代了硬的组件内的编码它们的依赖关系的软件设计模式。这减轻一个组成部分,从定位的依赖,依赖配置。这有助于使组件可重用,维护和测试。

AngularJS提供了一个至高无上的依赖注入机制。它提供了一个可注入彼此依赖下列核心组件。

工厂

服务

提供者

常值

值是简单的JavaScript对象,它是用来将值传递过程中的配置相位控制器。

//define a module
var mainApp = angular.module("mainApp", []);
//create a value object as "defaultInput" and pass it a data.
mainApp.value("defaultInput", 5);
...
//inject the value in the controller using its name "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);
  }
});

工厂

工厂是用于返回函数的值。它根据需求创造值,每当一个服务或控制器需要。它通常使用一个工厂函数来计算并返回对应值

//define a module
var mainApp = angular.module("mainApp", []);
//create a factory "MathService" which provides a method multiply to return multiplication of two numbers
mainApp.factory('MathService', function() {   
  var factory = {}; 
  factory.multiply = function(a, b) {
   return a * b 
  }
  return factory;
}); 

//inject the factory "MathService" in a service to utilize the multiply method of factory.
mainApp.service('CalcService', function(MathService){
   this.square = function(a) { 
   return MathService.multiply(a,a); 
  }
});
...

服务

服务是一个单一的JavaScript包含了一组函数对象来执行某些任务。服务使用service()函数,然后注入到控制器的定义。

//define a module
var mainApp = angular.module("mainApp", []);
...
//create a service which defines a method square to return square of a number.
mainApp.service('CalcService', function(MathService){
   this.square = function(a) { 
   return MathService.multiply(a,a); 
  }
});
//inject the service "CalcService" into the controller
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);
  }
});

提供者

提供者所使用的AngularJS内部创建过程中配置阶段的服务,工厂等(相AngularJS引导自身期间)。下面提到的脚本,可以用来创建,我们已经在前面创建MathService。提供者是一个特殊的工厂方法以及get()方法,用来返回值/服务/工厂。

//define a module
var mainApp = angular.module("mainApp", []);
...
//create a service using provider which defines a method square to return square of a number.
mainApp.config(function($provide) {
  $provide.provider('MathService', function() {
   this.$get = function() {
     var factory = {}; 
     factory.multiply = function(a, b) {
      return a * b; 
     }
     return factory;
   };
  });
});

常量

常量用于通过配置相位值考虑事实,值不能使用期间的配置阶段被传递。

mainApp.constant(“configParam”, “constant value”);

例子

下面的例子将展示上述所有指令。

testAngularJS.html

<html>
<head>
  <title>AngularJS Dependency Injection</title>
</head>
<body>
  <h2>AngularJS Sample Application</h2>
  <div ng-app="mainApp" ng-controller="CalcController">
   <p>Enter a number: <input type="number" ng-model="number" />
   <button ng-click="square()">X<sup>2</sup></button>
   <p>Result: {{result}}</p>
  </div>
  <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js"></script>
  <script>
   var mainApp = angular.module("mainApp", []);
	 
   mainApp.config(function($provide) {
     $provide.provider('MathService', function() {
      this.$get = function() {
        var factory = {}; 
        factory.multiply = function(a, b) {
         return a * b; 
        }
        return factory;
      };
     });
   });

   mainApp.value("defaultInput", 5);

   mainApp.factory('MathService', function() {   
     var factory = {}; 
     factory.multiply = function(a, b) {
      return a * b; 
     }
     return factory;
   }); 

   mainApp.service('CalcService', function(MathService){
      this.square = function(a) { 
      return MathService.multiply(a,a); 
     }
   });

   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);
     }
   });
  </script>
</body>
</html>

结果

在Web浏览器打开textAngularJS.html。看到结果如下。

以上就是对AngularJS 依赖注入的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!

您可能感兴趣的文章:

  • 详解AngularJS中的依赖注入机制
  • 详解Angularjs中的依赖注入
  • AngularJS学习笔记之依赖注入详解
  • AngularJS 依赖注入详解和简单实例
  • AngularJS之依赖注入模拟实现
  • 自学实现angularjs依赖注入
  • Angular 4依赖注入学习教程之简介(一)
  • AngularJS学习第二篇 AngularJS依赖注入
  • AngularJS应用开发思维之依赖注入3
  • 深入理解Angular中的依赖注入
张贴在3