`
周大帅
  • 浏览: 26563 次
社区版块
存档分类
最新评论

AngularJs 基础教程 —— 依赖注入

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

// 创建 factory "MathService" 用于两数的乘积 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;
});

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

// 使用 provider 创建 service 定义一个方法用于计算两数乘积
mainApp.config(function($provide) {
   $provide.provider('MathService', function() {
      this.$get = function() {
         var factory = {}; 
        
         factory.multiply = function(a, b) {
            return a * b;
         }
         return factory;
      };
   });
});
分享到:
评论

相关推荐

    AngularJs入门教程

    通过构建这样的应用,初学者可以快速掌握AngularJs的数据绑定和依赖注入等核心概念,以及如何不通过DOM操作来创建数据侦听器。 本教程强调了AngularJs相对于其他JavaScript框架的独特之处,包括其无插件、无需配置...

    疯狂前端开发讲义——jQuery+AngularJS+Bootstrap前端开发实战

    《疯狂前端开发讲义——jQuery+AngularJS+Bootstrap前端开发实战》是一本深入浅出的前端开发教程,它涵盖了三个核心的前端技术:jQuery、AngularJS和Bootstrap。这些技术在现代网页开发中扮演着至关重要的角色,使得...

    AngularJS 学习资料

    #### 四、AngularJS中的依赖注入 依赖注入(Dependency Injection, DI)是AngularJS的核心特性之一。它使得组件之间的耦合度降低,提高了代码的可读性和可维护性。在AngularJS中,依赖可以通过以下几种方式注入: ...

    AngularJs bootstrap搭载前台框架——准备工作

    AngularJS是一个由Google维护的JavaScript MVC框架,它提供了强大的数据绑定和依赖注入功能,使得前端开发更加高效。而Bootstrap则是Twitter开源的一套前端UI框架,它包含了一系列预先设计的组件和样式,能够快速...

    AngularJS实战 源代码

    《AngularJS实战》一书由陶国荣编著,是中国知名科技出版社——华章科技出版的一本关于AngularJS的实践教程。这本书旨在帮助读者深入理解AngularJS这一强大的前端框架,并通过实际项目案例提升开发技能。随书附带的...

    dojo-phone-cat:Dojo 版本的 Angularjs PhoneCat 教程

    1. **模块化**:AngularJS使用其自己的依赖注入系统,而Dojo使用AMD来管理模块。开发者需要将AngularJS的服务、控制器和指令转换为Dojo的定义模块。 2. **数据绑定**:AngularJS的双向数据绑定被Dojo的`dojo/...

    angular-mail:Thinkful.com AngularJS教程,实现电子邮件系统

    在本教程中,我们将深入探讨如何使用AngularJS构建一个电子邮件系统,这源于Thinkful.com的AngularJS教程——"angular-mail"。AngularJS是Google维护的一个强大的前端JavaScript框架,它简化了网页应用程序的开发,...

    疯狂前端开发讲义:jQuery+AngularJS+Bootstrap前端开发实战

    在AngularJS章节中,你将学习到依赖注入、指令系统、数据绑定、服务以及控制器等核心概念,同时了解如何构建单页应用(SPA)以及进行路由管理。此外,还会探讨Scope、Directives和Filters的高级用法,帮助你提升...

    simple-email-app:我通过关注Thinkful AngularJS教程学习Angular

    **学习资源——Thinkful AngularJS教程** 描述中提到的"Thinkful AngularJS教程"是一个学习AngularJS的好途径。Thinkful是一个在线学习平台,提供了一系列编程课程,包括AngularJS。通过这样的教程,学习者可以系统...

    angularjs_tuto8

    6. **依赖注入(Dependency Injection)**:AngularJS的依赖注入机制简化了代码的组织和管理,它自动为控制器、服务等提供所需依赖,无需手动创建实例。在AngularJS_tuto8中,你将看到如何声明和使用依赖。 7. **...

    angularjs---shaping-up-with-AngularJS

    3. **依赖注入**:AngularJS的依赖注入系统使得组件间的关系变得清晰,简化了代码,同时也提高了测试性。开发者无需手动创建对象,而是声明所需的服务,AngularJS会自动注入。 4. **服务**:AngularJS中的服务如$...

    智能社课件

    AngularJS的核心特性包括双向数据绑定、依赖注入、指令系统、服务、过滤器和模块化等。它通过扩展HTML语法,使得HTML更加适合声明式编程,从而简化了前端开发工作。在双向数据绑定中,视图和模型之间的数据变化会...

    SPA-Adds-AngularJS:单页应用添加AngularJS编写的维护者

    2. **依赖注入**:AngularJS的依赖注入系统允许开发者在不关心对象如何创建或管理的情况下,轻松获取和使用服务,降低了代码间的耦合度。 3. **指令系统**:AngularJS通过自定义HTML指令扩展了DOM,让开发者可以...

    AngularJS入门示例之Hello World详解

    了解这些基础知识后,你可以继续探索AngularJS的其他核心特性,如服务(services)、控制器(controllers)、过滤器(filters)、指令(directives)和路由(routing),以及更高级的主题,如依赖注入和模块化开发。...

    Codecademy-AngularJS-Gameboard:AngularJS上的Gameboard应用程序-Codecademy

    7. **依赖注入(Dependency Injection)**:AngularJS通过依赖注入机制,自动管理对象的创建和依赖关系,简化了代码维护和测试。 在Codecademy的AngularJS Gameboard教程中,你将逐步学习如何设置这些组件,并实际...

    AngularJS-Project

    3. **依赖注入**:AngularJS的依赖注入系统使得组件之间的依赖关系变得清晰,降低了代码的耦合度。开发者可以轻松地在不同组件间共享服务,而无需关心它们是如何被创建或获取的。 4. **服务**:AngularJS提供了多种...

Global site tag (gtag.js) - Google Analytics