Arka plan, uygulamamızdaki sınıfların/modüllerin geçerli uygulaması common.js ve CoffeeScript sınıflarıdır. Çaresizce ES6 veya TypeScript ile çalışmak için bir çözüm arıyorum, ama sorun kalır.(ES6) sınıfları ve devralma ile Angular.js DI
Angular-1.x kullanarak sınıf kalıtımıyla DI nasıl yapılır? Burada SubService
başarıyla super()
çağırmak için tüm üst DI gereksinimlerini yeniden tanımlamak,
// 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 }
Must tek:
kodunu göz önüne alındığında?
// 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() });
çirkin olmaktan yana, ideal daha da azdır: Biz şu anda aşağıdaki benzer bir şey yapıyoruz
.
en altında bu eklentiyi şu şekildedir:
O arada çalışan bir
@inject
dekoratör koydu bu? Aynı şekilde yaklaşıyoruz ama daha iyi bir yolu olmalı. – forrestrangerBu nedenle tam olarak benim takımım açısal işlerimiz için ES6'ya geçiş yapmadı, biz bunun ng-2.0'deki yazı tipinde bir şekilde ele alınacağını umuyoruz, ancak çözen hiçbir şey görmüyoruz bu henüz. –
Diğer pek çok yerde olduğu gibi, AngularJS'de daha kolay ve daha okunaklı bir şekilde miras üzerinden kompozisyon kullanmayı düşünüyorum. – Thomas