`

angularjs源码笔记(3)--injector

阅读更多

简介

injector是用来做参数自动注入的,例如

functionfn ($http, $scope, aService) {
}

ng在运行时会把$http, $scope, aService 自动作为参数传入进行执行。

其实很容易想明白,injector做了两件事

  1. 缓存那些service,以后作为参数注入
  2. 分析参数列表,找到需要的参数注入

下面源码分析如何实现上面两件事情。

 

结构

createInjector -> createInternalInjector  return: instanceInjector

所以 createInjector() 返回的是 instanceInjector,结构如下:

 

{
  invoke: invoke,
  instantiate: instantiate,
  get: getService,
  annotate: annotate,
  has: function(name) {
    return providerCache.hasOwnProperty(name + providerSuffix) || cache.hasOwnProperty(name);
  }
}

 

 

省略.... 详细见 http://my.oschina.net/alexqdjay/blog/734434

 

 

 

0
0
分享到:
评论

相关推荐

    angularjs-chapter2-示例chapter2.rar

    3. 服务:AngularJS的服务是一种可重用的组件,用于封装和隔离应用程序的特定功能,如HTTP通信、缓存、依赖注入等。在Chapter2中,`$http`服务被用来与服务器进行异步通信,而`$scope`服务则作为控制器和视图之间的...

    AngularJS的启动过程---加上了指令执行机制框图.pdf

    ### AngularJS启动过程详解 #### 一、启动前的准备工作 AngularJS的启动流程非常关键,它决定了应用程序如何被初始化并准备好处理用户交互。启动流程的第一步是对环境进行准备,确保一切就绪。 1. **检查Angular...

    XHCI-300-series-injector.kext_300_xhci_

    标题中的“XHCI-300-series-injector.kext_300_xhci_”指的是一款针对苹果操作系统(macOS)的扩展内核插件,主要用于解决苹果硬件(尤其是那些基于300系列芯片组的主板)在升级到10.13及以上版本系统后,无法正确...

    python-dependency-injector, python的依赖注入 microframework.zip

    python-dependency-injector, python的依赖注入 microframework 依赖注入器- python的依赖注入 microframework依赖注入器是 python的依赖注入 microframework 。 它被设计成统一的开发人员友好工具,帮助实现形式化...

    Python库 | dependency-injector-4.1.2.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:dependency-injector-4.1.2.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    前端开源库-bs-html-injector

    压缩包中的`html-injector-master`文件夹很可能包含了该库的源代码、示例、文档和测试用例。通过查看这些内容,开发者可以深入理解库的工作机制,对其进行自定义或者扩展,以满足特定项目的需要。 总的来说,BS-...

    前端项目-svg-injector.zip

    3. **动态内联**:SVG Injector将SVG图标转换为内联样式,这使得SVG图标可以更好地适应CSS样式控制,如颜色、大小等。同时,内联SVG也便于响应式设计,可以随页面布局的变化而自动调整。 4. **事件处理**:SVG ...

    k8s-env-injector

    Kubernetes ENV喷油器 k8s-env-injector的目的是将节点标签作为环境变量注入到选定名称空间中的k8s-env-...> export ENV_INJECTOR_NAMESPACE= " namespace-where-env-injector-will-be-deployed-to " > export EN

    XHCI-300-series-injector.kext_xhc_BlackSeries_

    标题 "XHCI-300-series-injector.kext_xhc_BlackSeries_" 指向的是一款专为苹果电脑设计的驱动程序补丁,主要针对USB 3.0控制器,特别是"BlackSeries"系列。这个补丁的核心是 "XHCI-300-series-injector.kext" 文件...

    PyPI 官网下载 | os-android-files-injector-1.0.tar.gz

    标题中的"PyPI 官网下载 | os-android-files-injector-1.0.tar.gz"表明这是一个在Python Package Index(PyPI)上发布的开源软件包,名为"os-android-files-injector",版本为1.0,其源代码被打包成了tar.gz格式。...

    angularjs 源码解析之injector

    简介 injector是用来做参数自动注入的,例如 ...下面源码分析如何实现上面两件事情。 结构 createInjector -> createInternalInjector return: instanceInjector 所以 createInjector() 返回的是 insta

    x64-DLL-injector-master_crossinjector_源码

    【标题】"x64-DLL-injector-master_crossinjector_源码"涉及的核心知识点是x86到x64平台的DLL注入技术。DLL注入(Dynamic Link Library Injection)是一种高级编程技术,通常用于调试、性能监测或者恶意软件中,它...

    PyPI 官网下载 | django-js-variable-injector-1.0.2.tar.gz

    **PyPI 官网下载 | django-js-variable-injector-1.0.2.tar.gz** 在Python的世界里,PyPI(Python Package Index)是官方的软件仓库,它为开发者提供了发布、查找和安装Python模块的平台。`django-js-variable-...

    PyPI 官网下载 | dependency-injector-3.11.2.tar.gz

    dependency-injector-3.11.2.tar.gz 是这个库在Python Package Index (PyPI) 官网上发布的压缩包文件,用于下载和安装到你的Python环境中。PyPI是Python社区的主要软件仓库,开发者可以在这里发布自己的Python包,而...

    AngularJs学习笔记

    AngularJs学习笔记中涉及了AngularJs的基本概念和操作流程,其知识点主要包括以下几个方面: 一、AngularJs的基本概念 AngularJs是一种前端的JavaScript框架,主要用于构建单页面应用程序。AngularJs的核心特性包括...

    authlib-injector.yushi.moe:提供 authlib-injector 下载服务

    authlib-injector.yushi.moe 本项目提供 下载服务。 此 API 部署于 GitHub Pages 上,URL 为 。API 文档请参见 。 此分支为 master 分支,用于存储构建输出。

    PyPI 官网下载 | smart-injector-0.0.6.tar.gz

    "PyPI 官网下载 | smart-injector-0.0.6.tar.gz" 这个标题表明我们讨论的是一个从Python Package Index (PyPI) 官方网站获取的软件包,名为 "smart-injector",其版本号是0.0.6,且它以tar.gz格式提供。这种格式是...

    PyPI 官网下载 | dependency-injector-4.30.0.tar.gz

    dependency-injector-4.30.0.tar.gz 是一个从PyPI(Python Package Index)官网下载的压缩包,包含dependency-injector库的源代码。PyPI是Python软件的主要分发平台,为开发者提供了发布和安装Python项目的便利途径...

    AU-Injector-master.zip

    《AU-Injector-master.zip》是一个压缩包文件,其名称暗示着它可能是一个与音频处理或游戏模组相关的项目。从描述“AU-Injector-master”我们可以推测,这可能是一个开源项目,主分支为“master”,通常在Git版本...

    authlib-injector:构建自己的Minecraft身份验证系统

    取得您可以从获取最新的authlib-injector。建立构建依赖:Gradle,JDK 8+。执行以下命令: gradle构建输出放在build/libs下。部署通过添加以下JVM参数来配置: -javaagent:{authlib-injector.jar 的路径}={验证...

Global site tag (gtag.js) - Google Analytics