我们如何允许用户访问其体内子组件的属性,例如aura:iteration
的索引变量?
<aura:iteration items="{!v.contacts}" var="item" indexVar="index">
{!index} : {!item.FirstName}<br/>
</aura:iteration>
示例在此示例中,我需要使用contact
中的属性ComponentA
,但该属性仅在ListItem
组件上定义,就像{ {1}}您无需定义aura:iteration
即可使用它:
ComponentA
index
列表:
<aura:component>
<aura:attribute name="contacts" type="Contact[]"/>
<c:list contacts="{!v.contacts}">
<!-- Generic definition of how it's showed the listItem -->
<!-- making available the contact var like the index var on aura:iteration -->
<p>Name: {!contact.Name} </p>
</c:list>
</aura:component>
列表项:
<aura:component>
<aura:attribute name="contacts" type="Contact[]"/>
<aura:attribute name="body" type="Aura.Component[]"/>
<aura:iteration items="{!v.contacts}" var="contact">
<c:listItem contacts="{!contact}" body="{!v.body}"/>
</aura:iteration>
</aura:component>
另一个例子:
想象一下customLookup允许使用该通用组件的开发人员在组件内部传递html以获得个性化列表项。
默认使用<aura:component>
<aura:attribute name="contact" type="Contact"/>
<aura:attribute name="body" type="Aura.Component[]"/>
{!v.body}
</aura:component>
想象一下,这个结果等于销售人员提供的标准。
但是现在,给了其他业务要求Lookup的listItem看起来不同,有不同的字段等。例如:
<c:customLookup apiName="Contact" selectedId="{!v.contactId}"/>
现在,customLookup将使用开发人员传递的新listItem进行渲染,而不是使用联系人电子邮件。