如何理解AngularJS中的依赖注入

    AngularJS最容易引起混淆的特性之一就是依赖注入(DI)。可能很难理解到底什么是依赖注入,它如何工作,以及为什么它是有用的。

    先从理解依赖注入打算要解决的问题开始。一个AngularJS应用程序中的一些组件可能会依赖于其它组件,例如,控制器需要使用 $scope 组件,使得控制器可以向视图传递数据,即控制器依赖于 $scope 组件来执行工作。

<script>
	...
	myApp.controller('myCtrl', ['$scope',function($scope){
		//在此定义controller的逻辑
	}]);
	...
</script>

    依赖注入简化了组件之间处理依赖的过程(即解决依赖)。没有依赖注入,就不得不以某种方式自己查找$scope,很可能得使用全局变量。这虽然能够工作,但是不如AngularJS的依赖注入技术这么简单。

    AngularJS应用程序中的一个组件通过在工厂函数的参数上声明依赖,声明的名称要与所依赖的组件相匹配。依赖注入改变了函数参数的用途,没有依赖注入,参数会被用于接收调用者想传入的任何对象,但是有了依赖注入后,函数使用参数来提出需求,告诉AngularJS它需要什么样的组件。

    在开发中使用依赖注入的主要好处是AngularJS负责管理组件并在需要的时候提供给相应函数。依赖注入还能够为测试带来好处,因为它允许你使用假的或者模拟的对象来代替真实的组件,从而让开发者专注于程序的特定部分。

猜你喜欢

转载自blog.csdn.net/ghostlpx/article/details/52751344