3

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

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

示例如下:

值转换器:

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,或者使用事件触发它吗?

4

1 回答 1

2

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

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

于 2017-06-26T14:08:54.783 回答