第二眼——AngularJS方法扩展之依赖注入

依赖注入 DI(Dependency Injection)

依赖注入主要是将一个功能注入到另外一个不想跟的模块里面去, 让这个功能变成这个模块的一部分,叫作依赖注入,相似在一个功能模块中调用另外一个模块(模块化)javascript

只是模块化是在一个调用的里面去主动引入和查找另外一个被调用的模块,而依赖注入是被调用者主动声明,并将本身注入到调用者内部前端

AngularJS的依赖注入主要是将一些功能或者值注入到控制器中,这是实现AngularJS方法扩展的主要方式之一java

模块化与依赖注入的异同:
(关于前端模块化能够看《前端模块化的那些事儿》angularjs

type common differentia
模块化 解决不一样层面之间的调用关系 调用者主动查找被调用者
依赖注入 解决不一样层面之间的调用关系 被调用者声明主动声明,注入到调用者内部

在什么地方使用依赖注入?

  • 依赖注入通常都是使用在纯粹表示功能的地方编程

  • 通常一些表示功能的api咱们均可以提取出来,变成全局,全部AngularJS控制器均可以使用功能模块api

  • 方法复用——面向切面编程app

AngularJS的依赖注入的方式

  1. 声明angularjs管理模块模块化

var app = angular.module('app',[])
  1. 依赖注入的几种方式函数

    • 使用.value() 前置声明,主要用于定义一些变量this

//能够是值或函数
app.value('MyValue', 'Hello world'); 
app.value('MyFunc', function() { return 'Samuel say hello to you!' });
app.controller('mycontroller', function($scope, MyValue, MyFunc) {
    console.log( MyValue );
    MyFunc();
});
  • 使用.constant() 前置声明,它与.value()方法相同,主要是实现一些值的定义,但.constant()是静态变量的声明

app.constant('MyName', 'Samuel');//以第一次的赋值为主
app.constant('MyName', 'Sammuueell');
app.constroller('mycontroller', function( $scope, MyName ) {
    console.log( MyName );//Samuel
});
  • 工厂模式.factory(),这是插件形式的扩展

app.factory('MyFactory', function() {
    return {
        showName: function() { console.log( 'Samuel' ) },
        showAge: function() { console.log( 25 ) }
    }
});
app.controller('mycontrollre', function( $scope, MyFactory ) {
    MyFactory.showName();
    MyFactory.showAge();
});
  • 用.service()注入方法,这是以服务提供的方式实现扩展

app.service('MyService', function() {
    this.setService = functioin() {  }
});
app.controller('mycontroller', function( $scope, MyService ) {
    console.log( MyService );
});

PS:与工厂模式的区别:.service至关于在底层直接经过new操做符建立了一个实例,而工厂模式须要经过返回对象的方式来调用

以上就是经过依赖注入给AngularJS进行扩展的基本方式,嚯嚯嚯~

那几眼哪儿去了?
第一眼——AngularJS
第三眼——AngularJS路由

相关文章
相关标签/搜索