2015-04-08 70 views
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”以引入依赖项,这种方法可行,但感觉重复,因为我必须将字典注入每个视图模型以使“当前语言”变量可用于视图。

我可以从TValueConverter类发出信号,它对dictionary.lang有依赖关系,或者使用事件触发它吗? https://github.com/aurelia/templating-binding:

+1

信号在释放后接下来的到来,盯紧这个问题确实解决/问题/ 25 –

回答