gpt4 book ai didi

javascript - 具有 (ES6) 类和继承的 Angular.js DI

转载 作者:可可西里 更新时间:2023-11-01 01:44:01 26 4
gpt4 key购买 nike

背景,我们应用程序中类/模块的当前实现是 common.js 和 CoffeeScript 类。我正在拼命寻找可以使用 ES6 或 TypeScript 的解决方案,但问题仍然存在。

如何使用 Angular-1.x 通过类继承进行 DI?

给定代码:

// SuperService.js
class SuperService {
constructor($http, $q, $etc) {
// Implementation is not important ...
}
}
export { SubService }

// SubService.js
import { SuperService } from './SuperService';
class SubService extends SuperService {
constructor($more, $di, $things, $here) {
// Implementation is not important ...
// // // // // // // // // //
// Problem exists here ... //
// // // // // // // // // //
super($we, $need, $all, $the, $super, \
$class, $di, $things, $every, $time, $we, \
$inherit, $from, $it)
}
}
export { SubService }

一定要在SubService这里重新定义所有的parent DI要求才能成功调用super()吗?

我们目前正在做类似于以下的事情:

// CoffeeScript                              // Javascript
app.factory "subService", (Service) -> app.factory("subService", function(Service) {
SubService = () -> var SubService;
Service.call(@) SubService = function() {
@ Service.call(this);
return this;
# Overwrite some stuff on the "Service" };
Service::basepath = "/environments" Service.prototype.basepath = "/environments";
Service::model = Environment Service.prototype.model = Environment;
return new SubService();
new SubService() });

除了丑之外,这也不太理想。

最佳答案

它不是 ES6(它是 ES7),但它可能会让您满意

我会调查 angular-decorators通过 MikeRyan52 .

他组装了一个 @inject 装饰器,其工作方式如下:

@inject('$http', '$rootScope')
class SomeClass {
constructor($http, $rootScope) {

}
}

@inject('$q')
class SubClass extends SomeClass {
constructor($q, ...parentDependencies) { /** parent dependencies caught with a rest parameter **/
super(...parentDependencies);
}
}

the implementation of @inject

关于javascript - 具有 (ES6) 类和继承的 Angular.js DI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29012830/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com