详解Angularjs中的依赖注入
来源: 阅读:746 次 日期:2016-07-20 16:15:09
温馨提示: 小编为您整理了“详解Angularjs中的依赖注入”,方便广大网友查阅!

这篇文章主要为大家详细介绍了Angularjs中的依赖注入,AngularJS提供了一个至高无上的依赖注入机制,感兴趣的小伙伴们可以参考一下

一个对象通常有三种方式可以获得对其依赖的控制权:

在内部创建依赖;

通过全局变量进行引用;

在需要的地方通过参数进行传递

依赖注入是通过第三种方式实现的。比如:

function SomeClass(greeter) {

this.greeter = greeter;

}

SomeClass.prototype.greetName = function(name) {

this.greeter.greet(name);

};

SomeClass能够在运行时访问到内部的greeter,但它并不关心如何获得对greeter的引用。

为了获得对greeter实例的引用,SomeClass的创建者会负责构造其依赖关系并传递进去。

基于以上原因,AngularJS使用$injetor(注入器服务)来管理依赖关系的查询和实例化。

事实上,$injetor负责实例化AngularJS中所有的组件,包括应用的模块、指令和控制器等。

例如下面这段代码。这是一个简单的应用,声明了一个模块和一个控制器:

angular.module('myApp', [])

.factory('greeter', function() {

return {

greet: function(msg) {alert(msg);}

}

})

.controller('MyController',

function($scope, greeter) {

$scope.sayHello = function() {

greeter.greet("Hello!");

};

});

当AngularJS实例化这个模块时,会查找greeter并自然而然地把对它的引用传递进去:

<div ng-app="myApp">

<div ng-controller="MyController">

<button ng-click="sayHello()">Hello</button>

</div>

</div>

而在内部,AngularJS的处理过程是下面这样的:

// 使用注入器加载应用

var injector = angular.injector(['ng', 'myApp']);

// 通过注入器加载$controller服务:var $controller = injector.get('$controller');

var scope = injector.get('$rootScope').$new();

// 加载控制器并传入一个作用域,同AngularJS在运行时做的一样

var MyController = $controller('MyController', {$scope: scope})

以上就是本文的全部内容,希望本文对大家学习Angularjs依赖注入有所帮助。

更多信息请查看网络编程
手机网站地址:详解Angularjs中的依赖注入
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:hfpxwx
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map