在同一闪电组件内调用闪电组件
Call lightning component inside same lightning component
我正在尝试实现一个闪电组件,该组件递归调用自身以生成具有填充地图属性的树层次结构,如下所示
Map<Integer,Map<Id,List<Object>>>
是第一个键 树的级别 和第二个键 检索到的对象列表的 parentid.
我的问题是:是否可以创建一个像这个例子一样工作的组件?
自定义闪电组件
<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);
}
})
代码非常基础,只是举一个我想要实现的例子。
这可能吗?递归调用同一个闪电组件?
是的,可以使用 aura:iteration 标记迭代子组件。 但是,您创建的地图看起来非常复杂,并且 Lightning 无法非常轻松地访问地图及其内容。您可以在 javascript(helper) 中创建 JSON 对象来代替如此复杂的映射,这肯定会降低复杂性。
我正在尝试实现一个闪电组件,该组件递归调用自身以生成具有填充地图属性的树层次结构,如下所示
Map<Integer,Map<Id,List<Object>>>
是第一个键 树的级别 和第二个键 检索到的对象列表的 parentid.
我的问题是:是否可以创建一个像这个例子一样工作的组件?
自定义闪电组件
<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);
}
})
代码非常基础,只是举一个我想要实现的例子。
这可能吗?递归调用同一个闪电组件?
是的,可以使用 aura:iteration 标记迭代子组件。 但是,您创建的地图看起来非常复杂,并且 Lightning 无法非常轻松地访问地图及其内容。您可以在 javascript(helper) 中创建 JSON 对象来代替如此复杂的映射,这肯定会降低复杂性。