【发布时间】:2015-07-25 10:34:26
【问题描述】:
我正在使用 angular、jspm 和 es6。我正在使用一个基类将依赖项注入构造函数并自动在“this”上注册。
这实际上是当你扩展基础组件类时存在于 React 中的一种模式。我在这里找到了这家伙的小捷径:http://www.newmediacampaigns.com/blog/refactoring-react-components-to-es6-classes
我正在寻找一种使用 Angular 执行此操作的方法,使用 es6 类将注入的依赖项绑定到构造函数的“this”。
class baseClass {
constructor(...injections) {
this._bind(injections)
}
_bind(injections) {
injections.forEach( (injection) => {
this[injection.name] = injection;
});
}
}
class DiClass extends baseClass {
constructor($q, SomeAngularFactory) {
super($q, SomeAngularFactory);
}
}
这显然不起作用(injection.name 不是一个东西,我知道)......但它几乎可以。我的问题是如何获得注入函数或对象的“名称”。在这个例子中,_bind 函数只是给你原始对象或函数......我不知道如何将“$q”或“SomeAngularFactory”作为字符串。
您可以通过使用“Object.getOwnPropertyNames(...injections)”来获得它,但不能在 _bind 函数内。
感谢您的任何反馈或想法。
【问题讨论】:
-
您可以从函数的字符串表示中解析变量名称。 应该你这样做吗?可能不会。
标签: angularjs dependency-injection ecmascript-6