Dav*_*ang 27 dependency-injection angularjs
在AngularJS文档中,解释了工厂,服务,值,常量和提供者之间的差异.
最后,我们有一个比较表:
其中一行是"类型友好注射".我无法理解它是什么.
那是什么意思?另外,这意味着,为了使一个值具有这种"类型友好注入",这是以"通过直接使用新运算符进行初始化"为代价的?
Pau*_*tte 11
在AngularJS中,您可以通过多种方式注入依赖项:
link函数中的位置类型友好注入允许您通过引用隐含地调用构造函数:
myApp.service('Pattern', ["Infinity", RegExp]);
Run Code Online (Sandbox Code Playgroud)
而不是明确使用new关键字:
myApp.factory('Pattern',
["Infinity", function(Infinity)
{
return new RegExp(Infinity);
}
]);
Run Code Online (Sandbox Code Playgroud)
要么
function goInfinity(Infinity)
{
return new RegExp(Infinity);
}
goInfinity.$inject = ["Infinity"];
myApp.factory('Pattern', goInfinity);
Run Code Online (Sandbox Code Playgroud)
Service配方生成一个服务,就像Value或Factory配方一样,但它通过使用new运算符调用构造函数来实现.构造函数可以使用零个或多个参数,这些参数表示此类型的实例所需的依赖项.
急切初始化意味着constant配方必须返回构造函数才能使用上述语法:
function RegExpConstant()
{
return new RegExp(Infinity);
}
myApp.constant('Pattern', RegExpConstant)
Run Code Online (Sandbox Code Playgroud)
而不是返回函数,对象或文字值.
命名法来自Java:
服务是众所周知的一组接口.服务提供者是服务的特定实现.工厂是一个对象,它将对象引用返回给另一个对象
参考
我对"友好型注射"的解释:
工厂和提供程序分别注入工厂函数和$ get函数返回的任何内容,它们可以是任何类型,并且可能在运行时动态更改.而服务,常数和值注入是Angular知道的固定类型,因为它在配方定义期间已经明确定义.因此它们是类型友好的注射剂.
这里的类型是指:
- 原语,
- 对象文字,
- 功能,或
- 甚至是自定义类型的实例
工厂和供应商在服务,持续,价值方面最灵活,就其与注入器的绑定而言.因此,Angular可以检测绑定到Service,Constant,Value的对象/原语的类型因此更友好,因为我们知道类型的前期(设计/构建时间).
| 归档时间: |
|
| 查看次数: |
2270 次 |
| 最近记录: |