触发值转换器重新评估

Trigger value converter re-evaluation

有没有办法触发某个class的所有值转换器重新求值?

我问这个是因为我目前正在尝试找出一种进行本地化的好方法,特别是有一个翻译字符串的字典。

例子如下:

值转换器:

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 class 发出信号,表明它依赖于 dictionary.lang,或者使用事件触发它吗?

确实随着信号的到来解决了这个问题

http://aurelia.io/hub.html#/doc/article/aurelia/binding/latest/binding-binding-behaviors/5