Dependency Injection 依赖注入(官方原文翻译)
发布时间:2020-12-14 02:16:55 所属栏目:百科 来源:网络整理
导读:Dependency Injection (DI) is a software design pattern that deals with how components get hold of their dependencies. 依赖注入是一个软件设计规则 用来 解决:组件怎样得到他们的依赖 The Angular injector subsystem is in charge of creating comp
Dependency Injection (DI) is a software design pattern that deals with how components get hold of their dependencies.
依赖注入是一个软件设计规则 用来 解决:组件怎样得到他们的依赖
The Angular injector subsystem is in charge of creating components,resolving their dependencies,and providing them to other components as requested.
Angular 注入器 辅助系统 负责 创建组件,得到组件的依赖,提供组件自身到别的组件 ,当别的组件请求这些组件时。
Using Dependency Injection
DI is pervasive throughout Angular. You can use it when defining components or when providing
run and
config blocks for a module.
DI在Angular里是无处不在的。你可以在为一个模块 定义组件 或 规定run和config块的时候使用它。
run方法接收一个函数,可以用来被注入'service','value','constant'组件作为依赖。
注意,你不能注入'providers'进run。
SeeModulesfor more details about Factory Methods
The way you define a directive,service,or filter is with a factory function. The factory methods are registered with modules. The recommended way of declaring factories is:
定义directive,service或filter是通过一个工厂函数。工厂方法是注册在modules上。推荐声明工厂的方法是:
angular.module('myModule', []).factory('serviceId', ['depService', function(depService) { // ...}]).directive('directiveName',136)">// ...}]).filter('filterName',136)">// ...}]); Module Methods
We can specify functions to run at configuration and run time for a module by calling the
config and
run methods. These functions are injectable with dependencies just like the factory functions above.
我们可以指定运行的函数在配置阶段 和 run 的时候 通过调用module上的config和run方法。这些函数是可被注入依赖的,就像上面的工厂函数那样。
[]).config(['depProvider', function(depProvider) { // ...}]).run([ Controllers
resolves: 如果一个controller 被作为route的一部分实例化,那么任何作为路由一部分得到的值 是可注入进controller的。
Dependency Annotation
Angular invokes certain functions (like service factories and controllers) via the injector. You need to annotate these functions so that the injector knows what services to inject into the function. There are three ways of annotating your code with service name information:
Angular 调用某些函数(像工厂类的service和controllers)通过 注入器。你需要给这些函数注释,这样注入器知道什么样的services要被注入到这个函数。这里有3个方法注释你的代码带上service的名字信息。
使用行内数组注释(首选)
使用$inject属性注释
从函数参数中隐式注释
Inline Array Annotation(内联数组注释)
This is the preferred way to annotate application components. This is how the examples in the documentation are written.
这是首选的方法注释应用组件。下面是文档中的例子:
For example: 'greeter', greeter) { // ...}]);
Here we pass an array whose elements consist of a list of strings (the names of the dependencies) followed by the function itself.
这里我们传入一个数组,数组元素由字符串列表(依赖的名字)然后跟上被调用的函数。
When using this type of annotation,take care to keep the annotation array in sync with the parameters in the function declaration.
当使用这种类型的注释时,要注意保持注释数组和函数参数同步。
|