Учитывая расширяемый компонент ауры, который используется в качестве базового компонента для другого компонента, как код в базовом компоненте может получить имя фактического экземпляра компонента? Например:

<!-- BaseComponent.cmp -->
<aura:component extensible="true">
  <aura:handler name="init" value="{!this}" action="{!c.doInit}" />
</aura:component>
// BaseComponentController.js
({
    doInit: function(component, event, helper) {
        var componentName = component.getType();
        console.log(componentName);
        var parentName = component.getConcreteComponent().getType();
        console.log(componentName);

    }
})
<!-- InstanceComponent.cmp -->
<aura:component extends="BaseComponentController" >
</aura:component>

Когда создается InstanceComponent и запускается init() BaseComponent, обе строки console.log будут выводить "cBaseComponent". Есть ли способ для кода BaseComponent init() узнать имя "cBaseComponent" без необходимости передавать его из InstanceComponent?

0
Jason Clark 14 Авг 2020 в 03:16

1 ответ

Я ошибся — при тестировании я случайно поменял местами какой-то код, так что я создавал экземпляр базового компонента, поэтому я видел один и тот же вывод из обоих вызовов console.log().

Чтобы ответить на мой собственный вопрос, правильный способ получить имя экземпляра компонента из базового компонента — component.getConcreteComponent().getType().

0
Jason Clark 14 Авг 2020 в 17:34