Вызовите компонент молнии внутри того же компонента молнии

Я пытаюсь получить компонент молнии, который рекурсивно вызывает себя для создания иерархии деревьев с атрибутами заполненной карты, которая выглядит как Map<Integer,Map<Id,List<Object>>> Будучи первым ключом, уровень дерева, а вторым ключом является парентидой списка найденных объектов.

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

CustomLightningComponent

<aura:component>
    <aura:attribute name="mapObject" type="map"/>
    <aura:attribute name="level" type="integer"/>
    <aura:attribute name="parentId" type="string"/>
    <aura:attribute name="listObject" type="list"/>

    <aura:iteration items="listObject" var="obj">
        <p>{!obj.Name}</p>
        <c:CustomLightningComponent mapObject="{!mapObject}" level="{!v.level}" parentId="{!obj.Id}"/>
    </aura:iteration>
</aura:component>

CustomLightningComponentController

({
    doInit: function(component, event, helper) {
         var map = component.get("v.mapObject");
         var level = component.get("v.level");
         var parentId = component.get("v.parentId");

         var listObjects = map[level][parentId];
         //To iterate over next level
         component.set("v.level", level++);
         //Set list
         component.set("v.listObject", listObjects);
    }
})

Код довольно простой, чтобы привести пример того, что я хочу реализовать.

Это вообще возможно? Вызывать тот же компонент молнии рекурсивно?

1 ответ

Решение

Да, можно перебирать дочерний компонент с помощью тега aura:iteration. Тем не менее, созданная вами карта выглядит очень сложной, и молния не обеспечивает очень легкий доступ к карте и ее содержимому. Вместо такой сложной карты вы можете создать объект JSON в javascript(помощнике), который определенно уменьшит сложность.

Другие вопросы по тегам