Пользовательские элементы управления SAPUI5: не отображается повторно созданный элемент управления агрегацией svg

#javascript #svg #sapui5

Вопрос:

Я разработал два пользовательских элемента управления в sapui5, которые используют элементы svg. Первый элемент управления-это родительский контейнер, который принимает совокупность нескольких элементов управления второго типа. Вы могли бы представить себе svg-элемент управления, который отображает несколько, например, кругов в качестве дочерних элементов агрегации.

При инициализации и первом рендеринге это работает хорошо, и отображаются круги.

Когда я изменяю свойство одного из дочерних агрегатов, средство визуализации вызывается снова (с обновленным свойством), и круг svg вводится в DOM. Проблема в том, что html не отображает этот недавно отображенный элемент управления.

Есть два способа показать это:

  1. перейдите к элементу в DOM в инструментах разработчика, нажмите «Редактировать как html» на родительском элементе управления, измените один неважный html-атрибут и завершите редактирование. Затем html повторно отправляет весь элемент управления svg, и красиво отображается «обновленный» круг.
  2. Скажите sapui5 повторно передать родительский элемент управления через некоторое время (например, через консоль), используя .rerender() метод объекта управления sapui5.

Я попытался воспроизвести его в песочнице кода, чтобы поделиться им, но даже при копировании одного и того же кода для пользовательских элементов управления я не смог этого сделать. Я все равно отправлю вам свой проект в песочнице, чтобы у вас было представление о том, что я пытался объяснить выше.

Я подозреваю, что это как-то связано с определениями пространства имен элементов svg, но я не могу найти решение для этого. Есть какие-нибудь идеи?