有没有办法触发某个类的所有值转换器重新评估?
我问这个是因为我目前正在尝试找出一种进行本地化的好方法,特别是拥有翻译字符串的字典。
示例如下:
值转换器:
export class TValueConverter {
static inject() { return [Dictionary] }
dictionary: Dictionary;
constructor(dictionary: Dictionary) {
this.dictionary = dictionary;
}
toView(key: string, replacements: any): string {
return this.dictionary.translate(key, replacements);
}
}
看法:
<template>
<p>${"hello_world" | t: {"name": "Some User"} }</p>
</template>
然后将其转换为
<p>
Hello Some User!
</p>
但是,用户可以更改当前语言,当他们这样做时,我想使用新语言重新评估这种值转换。
我的实现受到https://github.com/zewa666/aurelia-i18next的启发,但他们的解决方案是在值转换器中添加“:currentLanguage”以引入依赖关系,这有效,但感觉重复,因为我会有将字典注入每个视图模型,以使“currentLanguage”变量可用于视图。
我可以从 TValueConverter 类发出信号,表明它依赖于 dictionary.lang,或者使用事件触发它吗?