Jur*_*kov 6 valueconverter promise typescript aurelia
我需要使用promise返回的格式来格式化Date.我尝试从toView(value)返回promise.但这不起作用.
@autoinject
export class DateTimeValueConverter {
constructor(private formatService:FormatService) {
}
toView(value) {
return this.formatService.getFormat().then(format=>
moment(value).format(format)
);
}
}
Run Code Online (Sandbox Code Playgroud)
这是FormatService的代码,它可以正常工作
export class FormatService {
private format;
constructor(private http:AppHttp) {
this.format= null;
}
public getFormat() : Promise<string>{
if (this.format){
var promise = new Promise<string>((resolve, reject)=>{
resolve(this.format);
});
return promise;
}
return this.http.get('format')
.then((format) => {
if (format){
this.format= format;
}
return format;
});
}
}
Run Code Online (Sandbox Code Playgroud)
据我所知,您不能在值转换器中使用异步功能。我看到的一种解决方案是将format作为参数从视图模型传递到值转换器(通过视图)。但这意味着您需要在视图模型中获取格式,这会破坏价值转换器的全部意义......
我看到的另一个解决方案是进行调整,FormatService以便它缓存格式(假设“格式”不经常更改)。这样,该getFormat函数将是同步的,您可以在值转换器中使用它。当然,您需要找到一种在调用任何值转换器之前进行format初始化的方法。FormatService
| 归档时间: |
|
| 查看次数: |
798 次 |
| 最近记录: |