zoukankan      html  css  js  c++  java
  • Injector

    注入器是AngularJS框架实现和应用开发的关键,这是一个DI/IoC容器的实现。

    AngularJS将功能分成了不同类型的组件分别实现,这些组件有一个统称 - 供给者/provider

    注入器实现了两个重要的功能:

    集中存储所有provider的配方

    配方其实就是:名称+类构造函数。AngularJS启动时,这些provider首先使用其配方在注入器 内注册。比如,http请求服务组件封装在$httpProvider类内,它通过"$http"这个名字在注入 器内注册。

    按需提供功能组件的实例

    其他组件,比如一个用户的控制器,如果需要使用http功能,使用"$http"这个名字 向注入器请求,就可以获得一个http服务实例了。

    注册服务组件

    从injector的角度看,组件就是一个功能提供者,因此被称为供给者/Provider。 在AngularJS中,provider以JavaScript类(构造函数)的形式封装。

    服务名称通常使用一个字符串标识,比如"$http"代表http调用服务、"$rootScope"代表根 作用域对象、"$compile"代表编译服务...

    Provider类要求提供一个$get函数(类工厂),injector通过调用该函数, 就可以获得服务组件的实例。

    名称和类函数的组合信息,被称为配方。injector中维护一个集中的配方库, 用来按需创建不同的组件。这个配方库,其实就是一个Hash对象,key就是服务名称,value 就是类定义。

    获得注入器对象

    要使用AngularJS的功能,必须首先获取注入器。有两种方法取得注入器。

    创建一个新的注入器

    可以使用angular.injector()创建一个新的注入器:

    angular.injector(modules,[strictDi]);

    获取已经创建的注入器

    如果AngularJS框架已经启动,那么可以使用DOM对象的injector()方法获 得已经创建的注入器:

    varelement=angular.element(dom_element);

    varinjector=element.injector();

    通过注入器调用API

    注入器有两个方法可供进行API调用:invoke()和get()。

    invoke()

    使用注入器的invoke()方法,可以直接调用一个用户自定义的函数体,并通过函数参数 注入所依赖的服务对象,这是AngularJS推荐和惯例的用法:

    angular.injector(['ng'])

    .invoke(function($http){

    //do sth. with $http

    });

    get()

    也可以使用注入器的get()方法,获得指定名称的服务实例:

    varmy$http=angular.injector(['ng']).get('$http');

    //do sth. with my$http

  • 相关阅读:
    2020软件工程作业04
    2020软件工程作业03
    2020软件工程作业02
    2020软件工程作业01
    2020软件工程个人作业06——软件工程实践总结作业
    2020软件工程作业05
    2020软件工程作业02
    软件工程作业01
    2020软件工程个人作业06——软件工程实践总结作业
    2020软件工程作业05
  • 原文地址:https://www.cnblogs.com/hkhk/p/10506342.html
Copyright © 2011-2022 走看看