触发值转换器重新评估

时间:2015-04-08 10:33:19

标签: aurelia

有没有办法触发某个类的所有值转换器重新评估?

我之所以这样问,是因为我目前正试图找出一种很好的本地化方式,特别是有一个翻译字符串的字典。

示例如下:

价值转换器:

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的启发,但他们的解决方案是添加&#34 ;: currentLanguage&#34;到值转换器,以引入依赖,这是有效的,但感觉重复,因为我将不得不将字典注入每个视图模型,以便使#34; currentLanguage&#34;视图可用的变量。

我可以从TValueConverter类发出信号,它是否依赖于dictionary.lang,或者使用事件触发它?

1 个答案:

答案 0 :(得分:2)