以下代码失败并显示错误:
readCandidates不是函数:
这是代码
export class Candidates {
private _dataService : ModelContracts.IDataService;
constructor(private tag: ModelContracts.ITag, private dataService: ModelContracts.IDataService) {
this._value = tag;
this._dataService = dataService;
}
private _value : ModelContracts.ITag;
public get value() : ModelContracts.ITag {
return this._value;
}
public set value(v : ModelContracts.ITag) {
this._value = v;
}
candidates = [];
activate() {
this._dataService.readCandidates().then(candidates => this.candidates = candidates);
}
}
export interface IDataService {
readCandidates(): Promise<ModelContracts.ICandidate[]>
}
export class DataService {
//some implementation
}
我正在使用Aurelia下注1.1.0和Typescript。 注入dataService依赖项但函数调用失败。
答案 0 :(得分:1)
如果调用的上下文不是类(例如,因为您将activate
称为回调或事件),您需要确保整理范围。< / p>
例如:
activate = () => {
this._dataService.readCandidates().then(candidates => this.candidates = candidates);
}
如果你想拥有a consitent approach to handling the responsibility of scope in TypeScript,有一些更好的方法可以做到这一点。建议是在课外处理范围,因为班级不应该知道如何调用它。
答案 1 :(得分:0)
在aurelia中使用DI的接口是不可能的。