angular.injector

可通过angular.injector()方法来获取指定的服务。

正常,我们都是在controller等创建的时候,需要什么服务,就通过依赖的方式引进来。如todomvc的demo代码:

可是,通过injector,我们就可以想在什么时候引入服务,就什么时候引入。

注入器负责从我们通过$provide创建的服务中创建注入的实例。只要你编写了一个带有可注入性的参数,你都能看到注入器是如何运行的。每一个AngularJS应用都有唯一一个$injector,当应用启动的时候它被创造出来,你可以通过将$injector注入到任何可注入函数中来得到它($injector知道如何注入它自己!)。

一旦你拥有了$injector,你可以动过调用get函数来获得任何一个已经被定义过的服务的实例。

var myMod = angular.module(‘myModule‘, []);

myMod.provider(‘greeting‘, function() {
  this.$get = function() {
  return function(name) {
     alert("Hello, " + name);
    };
  };
});

var $injector = angular.injector();
var greeting = $injector.get(‘greeting‘);

greeting(‘Ford Prefect‘);  

注入器同样也负责将服务注入到函数中;例如,你可以魔法般的将服务注入到任何函数中,只要你使用了注入器的invoke方法:

var myFunction = function(greeting) {
  greeting(‘Ford Prefect‘);
};//把服务注入到myFunction函数中
$injector.invoke(myFunction); 

可参考:

http://sentsin.com/web/663.html

http://docs.angularjs.cn/api/auto/service/$injector

时间: 2024-10-12 12:42:29

angular.injector的相关文章

Angular injector注入器

<!DOCTYPE html><html ng-app="myApp"><head lang="en"> <meta charset="UTF-8"> <script src="js/angular.js"></script> <title></title></head><body><div ng-co

Angular - - angular.injector、angular.module

angular.injector 创建一个injector对象, 调用injector对象的方法可用于获取服务以及依赖注入. 格式:angular.injector(modules); modules:  Array 注入的模块(一个或多个). 使用代码: (function () { angular.module("firstModule", []) .service("firstService", function () { this._log = functi

(七)理解angular中的module和injector,即依赖注入

依赖注入(DI)的好处不再赘言,使用过spring框架的都知道.angularjs作为前台js框架,也提供了对DI的支持,这是javascript/jquery不具备的特性.angularjs中与DI相关有angular.module().angular.injector(). $injector.$provide.对于一个DI容器来说,必须具备3个要素:服务的注册.依赖关系的声明.对象的获取.比如spring中,服务的注册是通过xml配置文件的<bean>标签或是注解@Repository.

理解angular中的module和injector,即依赖注入

依赖注入(DI)的好处不再赘言,使用过spring框架的都知道.angularjs作为前台js框架,也提供了对DI的支持,这是javascript/jquery不具备的特性.angularjs中与DI相关有angular.module().angular.injector(). $injector.$provide.对于一个DI容器来说,必须具备3个要素:服务的注册.依赖关系的声明.对象的获取.比如spring中,服务的注册是通过xml配置文件的<bean>标签或是注解@Repository.

angular模块

在angular中,模块可以是一个对象.一个方法或一个数组(数组的最后一个元素必须是方法).后面要讲的模块属性和方法,都是针对通过angular.module()方法定义的模块而言的,我称之为angular模块. 通过angular.module()方法定义的模块是唯一的,如果重复定义,后面的就会覆盖前面的定义.不是通过angular.module()定义的模块,比如一个方法或一个数组,这些模块也是唯一的,但是这些模块一旦定义无法被修改. angular模块可以说是一个空对象,因为它本身不包含任

通过几段代码,理清angularJS中的$injector、$rootScope和$scope的概念和关联关系

$injector.$rootScope和$scope是angularJS框架中比较重要的东西,理清它们之间的关系,对我们后续学习和理解angularJS框架都非常有用. 1.$injector其实是一个IOC容器,包含了很多服务(类似于spring框架中的bean),其它代码能够通过       $injector.get("serviceName")的方式,从injector中获取所需要的服务.详情参考这篇文章 2.scope是angularJS中的作用域(其实就是存储数据的地方)

angular(3)服务 --注入---自定义模块--单页面应用

ng内部,一旦发生值改变操作,如$scope.m=x,就会自动轮询$digest队列,触发指定的$watch,调用其回调函数,然后修改dom树. 干货:https://github.com/xufei/blog/issues/10 1.ng提供了许多内置的服务,例如常用的$scope\$http\$window\$location等. http:POST请求: var app = angular.module('myApp', ['ng']); app.run(function($http){

11-angular.injector

创建一个注入器对象,该对象可用于检索服务以及依赖项注入(参见依赖项注入) 用法: angular.injector(modules, [strictDi]); 参数: modules:·

基于Karma 和 Jasmine 的Angular 测试(持续更新中)

最近对前端测试较感兴趣,尤其是Nodejs + Karma + Jasmine 对Angular 的测试.到处看看,做个记录吧,断断续续的更新. <一> 用Jasmine 测试 Angular 的service 1. 先扔代码吧: var app = angular.module('Application', []); app.factory('myService', function(){     var service  = {};     service.one  = 1;     se