【发布时间】:2018-01-03 10:54:16
【问题描述】:
我目前使用 Aurelia 作为我的前端框架和 Typescript。我有 5 个具有基本 crud 功能的实体。如何创建通用服务,这样我就不会创建 5 个具有相同功能的文件?这是我到目前为止所拥有的。如果我可以将其转换为通用类型并仅传递 api url,那就太好了。谢谢
import { HttpClient, json } from "aurelia-fetch-client";
import { inject } from "aurelia-framework";
@inject(HttpClient)
export class WheelTypeService {
public wheelTypes: WheelType[];
private http: HttpClient;
constructor(http: HttpClient) {
http.configure(config => config.useStandardConfiguration());
this.http = http;
}
getAll() {
var promise = new Promise((resolve, reject) => {
if (!this.wheelTypes) {
this.http.fetch('/api/WheelTypes')
.then(result => result.json() as Promise<WheelType[]>)
.then(data => {
this.wheelTypes= data;
resolve(this.wheelTypes);
})
.catch(err => reject(err));
} else resolve(this.wheelTypes);
});
return promise;
}
// omitted some of the crud functionalities
}
【问题讨论】:
-
正确的答案是使用装饰器。您仍然需要为每种类型创建一个类,但您可以使用装饰器添加所需的功能。话虽这么说,创建装饰器可能有点混乱,所以我不会提供答案,除非你想让我展示如何去做,因为它有点涉及,但一旦创建就很容易使用..大部分。
-
请告诉我怎么做。这可能是我一直在寻找的答案。请指教
标签: javascript typescript dependency-injection aurelia