如何在 Aurelia 中发出自定义属性信号?

How to signal a custom attribute in Aurelia?

对于绑定,我可以使用 signal 以防值被外部更新。自定义属性怎么样?

我有以下 data-language 自定义属性:

import { customAttribute, autoinject } from 'aurelia-framework';
import { LanguageService } from "./language";

@autoinject
@customAttribute("data-language")
export class LanguageCustomAttribute {

    private value: string;

    constructor(
        private element: Element,
        private languageService: LanguageService) { }

    public bind() {
        var e = $(this.element);
        e.html(this.languageService.getText(e.attr("data-language")));
    }

}

此自定义属性已使用

全局注册
  aurelia.use
      .standardConfiguration()
      .globalResources("./components/language/data-language");

现在假设用户可以在运行时更改语言(this.languageService.getText 的结果会改变)。我如何发送信号以便更新所有 [data-language] 个元素?

这几乎就是 Aurelia I18N 插件所做的,以及使用 EventAggregator 在注意到时动态更新自定义属性值。 See this Aurelia Discourse discussion详细解释