Как сигнализировать о пользовательском атрибуте в 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] обновились?


person Luke Vo    schedule 23.07.2018    source источник


Ответы (1)


Это в значительной степени то, что делает плагин Aurelia I18N, используя EventAggregator для обновления значения пользовательских атрибутов на лету, когда их замечают. Подробное объяснение см. в этом обсуждении Aurelia Discourse.

person zewa666    schedule 26.07.2018