依赖注入:一句话 --- 没事你不要来找我,有事我会去找你。

AngularJS    5个核心组件用来作为依赖注入:

  • value
  • factory
  • service
  • provider
  • constant

value:想来就是一个map定义了当前对象的变量,使用时将key放在function(key)参数列表中

constant:一个全局变量

mainApp.constant("configParam", "constant value");

service:像是一个普通函数,亦或者中间商,负责函数的调用

factory

  controller函数在调用时在参数位置添加先前定义的service函数,

  service函数也可以通过相同的方法调用factory函数内定义的方法。

  在java普通spring项目中,controller调用service,service调用业务代码,想来也差不多。

controller('CalcController', function($scope, CalcService, defaultInput) {
 1 <html>
2
3 <head>
4 <meta charset="utf-8">
5 <title>AngularJS 依赖注入</title>
6 </head>
7
8 <body>
9 <h2>AngularJS 简单应用</h2>
10
11 <div ng-app = "mainApp" ng-controller = "CalcController">
12 <p>输入一个数字: <input type = "number" ng-model = "number" /></p>
13 <button ng-click = "square()">X<sup>2</sup></button>
14 <p>结果: {{result}}</p>
15 </div>
16
17 <script src="https://cdn.staticfile.org/angular.js/1.4.6/angular.min.js"></script>
18
19 <script>
20 var mainApp = angular.module("mainApp", []);
21 mainApp.value("defaultInput", 5);
22
23 mainApp.factory('MathService', function() {
24 var factory = {};
25
26 factory.multiply = function(a, b) {
27 return a * b;
28 }
29 return factory;
30 });
31
32 mainApp.service('CalcService', function(MathService){
33 this.square = function(a) {
34 return MathService.multiply(a,a);
35 }
36 });
37
38 mainApp.controller('CalcController', function($scope, CalcService, defaultInput) {
39 $scope.number = defaultInput;
40 $scope.result = CalcService.square($scope.number);
41
42 $scope.square = function() {
43 $scope.result = CalcService.square($scope.number);
44 }
45 });
46
47 </script>
48
49 </body>
50 </html>

provider:感觉着与factory差不多,至少步骤差不多,按照刚才说的java的逻辑,也许只是业务代码的实现变了样子。

 1 //provider 实现 一小部分
2
3 var mainApp = angular.module("mainApp", []);
4
5 mainApp.config(function($provide) {
6 $provide.provider('MathService', function() {
7 this.$get = function() {
8 var factory = {};
9
10 factory.multiply = function(a, b) {
11 return a * b;
12 }
13 return factory;
14 };
15 });
16 });
17
18 //factory实现 一小部分
19
20 var mainApp = angular.module("mainApp", []);
21
22 mainApp.factory('MathService', function() {
23 var factory = {};
24
25 factory.multiply = function(a, b) {
26 return a * b;
27 }
28 return factory;
29 });
 1 //provider  完整代码
2
3 <html>
4
5 <head>
6 <meta charset="utf-8">
7 <title>AngularJS 依赖注入</title>
8 </head>
9
10 <body>
11 <h2>AngularJS 简单应用</h2>
12
13 <div ng-app = "mainApp" ng-controller = "CalcController">
14 <p>输入一个数字: <input type = "number" ng-model = "number" /></p>
15 <button ng-click = "square()">X<sup>2</sup></button>
16 <p>结果: {{result}}</p>
17 </div>
18
19 <script src="//cdn.staticfile.org/angular.js/1.4.6/angular.min.js"></script>
20
21 <script>
22 var mainApp = angular.module("mainApp", []);
23
24 mainApp.config(function($provide) {
25 $provide.provider('MathService', function() {
26 this.$get = function() {
27 var factory = {};
28
29 factory.multiply = function(a, b) {
30 return a * b;
31 }
32 return factory;
33 };
34 });
35 });
36
37 mainApp.value("defaultInput", 5);
38
39 mainApp.service('CalcService', function(MathService){
40 this.square = function(a) {
41 return MathService.multiply(a,a);
42 }
43 });
44
45 mainApp.controller('CalcController', function($scope, CalcService, defaultInput) {
46 $scope.number = defaultInput;
47 $scope.result = CalcService.square($scope.number);
48
49 $scope.square = function() {
50 $scope.result = CalcService.square($scope.number);
51 }
52 });
53
54 </script>
55
56 </body>
57 </html>

2020-11-13 15:46:10

angularJS依赖注入的个人理解的更多相关文章

  1. 关于angularjs依赖注入的整理

    初学angularjs阶段,刚刚看到菜鸟教程的angularjs依赖注入.现在整理一下: 1.含义:一个或更多的依赖(可以理解为模块关系依赖)或服务(分为内建服务[例如$http,$tiomeout等 ...

  2. AngularJS依赖注入

    <html> <head> <meta charset="utf-8"> <title>AngularJS 依赖注入</tit ...

  3. AngularJS 依赖注入

        依赖注入(Dependency Injection,简称DI)是一种软件设计模式,在这种模式下,一个或更多的依赖(或服务)被注入(或者通过引用传递)到一个独立的对象(或客户端)中,然后成为了该 ...

  4. 个人对于angularjs依赖注入的理解

    依赖注入(Dependency Injection,DI),作者认为本文中所有名词性的"依赖" 都可以理解为 "需要使用的资源". 对象或者函数只有以下3种获取 ...

  5. 记录对依赖注入的小小理解和autofac的简单封装

    首先,我不是一个开发者,只是业余学习者.其次我的文化水平很低,写这个主要是记录一下当前对于这块的理解,因为对于一个低水平 的业余学习者来说,忘记是很平常的事,因为接触.应用的少,现在理解,可能过段时间 ...

  6. AngularJS开发指南10:AngularJS依赖注入的详解

    依赖注入是一种软件设计模式,用来处理代码的依赖关系. 一般来说有三种方法让函数获得它需要的依赖: 它的依赖是能被创建的,一般用new操作符就行. 能够通过全局变量查找依赖. 依赖能在需要时被导入. 前 ...

  7. (五)Angularjs - 依赖注入

    如何找到API? AngularJS提供了一些功能的封装,但是当你试图通过全局对象angular去 访问这些功能时,却发现与以往遇到的库大不相同. 比如,AngularJS暴露了一个全局对象:angu ...

  8. AngularJS - 依赖注入(Dependency Injection)

    点击查看AngularJS系列目录 转载请注明出处:http://www.cnblogs.com/leosx/ 依赖注入 依赖注入是软件设计模式中的一部分,用于处理组件是如何得到它说依赖的其它组件的. ...

  9. C# 一个初学者对 依赖注入 IOC 的理解( 含 Unity 的使用)

    通过 人打电话 来谈谈自己对IOC的理解 版本1.0 public class Person { public AndroidPhone Phone { get; set; } public void ...

  10. 控制反转(IOC) 和依赖注入(DI) 的理解

    1.      IOC(控制反转) inverseof control是spring容器的内核,AOP.声明事务等功能在此基础上开花结果. 2.      通过实例理解IOC概念: 实例:<墨攻 ...

随机推荐

  1. VS2010运行opencv的程序,出现“应用程序无法正常启动0xc000007b”的解决方法

    问题描述 当我们在用vs2010对工程进行编译结束后,并且生成了可执行文件时,但是运用时却出现了"应用程序无法正常启动0xc000007b" 解决方法 这个通常是有一些动态链接库没 ...

  2. [node]启动一个简单的node接口

    来自知乎. 需要先安装一个node,安装过程不表. 新建文件: nodeServer.js // 复制这个文件到目录,再输入一下命令: // npm i express // node nodeSer ...

  3. 机器学习——常见的backbone

    参考链接:https://www.zhihu.com/question/396811409/answer/1252521120 LeNet:5层轻量级网络,一般用来验证小型数据: AlexNet/VG ...

  4. holiday05

    第五天 cat cat会一次性显示所有的内容,适合查看 内容较少 的文本文件 选项 含义 -b 对非空输出行编号 -n 对输出的所有行编号 more more每次只显示一页内容,适合于查看 内容较多 ...

  5. 转—记录一下获取NC程序名称的方法

    案例源代码如下: #include <uf_obj.h> #include <uf_setup.h> #include <uf_ncgroup.h> static ...

  6. java8中CompletableFuture异步处理超时

    java8中CompletableFuture异步处理超时的方法 Java 8 的 CompletableFuture 并没有 timeout 机制,虽然可以在 get 的时候指定 timeout,但 ...

  7. pandas的数据结构--Series创建使用

    # 1. 使用Series创建一个空的系列:import pandas as pds=pd.Series()print(s)输出结果为:Series([], dtype: float64) # 2. ...

  8. ZSTUOJ刷题⑥:Problem 3535.--模拟简单计算器

    3535: 模拟简单计算器 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 4634  Solved: 1652 Description 程序模拟简单运算器 ...

  9. 北大2022编译原理实践(C/C++)-sysy 编译器构建

    这是今年新推出的实践方案,由往年的sysy->IR1->IR2->RISC V变成了sysy->Koopa->RISC V,通过增量的方式让整个实践过程更容易上手 所以先 ...

  10. 【Android异常】关于Notification启动时,startForeground报错

    遇到两个报错: 第一个权限问题报错,好解决 startForeground requires android.permission.FOREGROUND_SERVICE Manifest给下权限就行 ...