Наследовать атрибуты внутри фасета в компоненте молнии
Как мы можем разрешить пользователю доступ к атрибутам дочернего компонента внутри своего тела, например, к индексу var aura:iteration
?
<aura:iteration items="{!v.contacts}" var="item" indexVar="index">
{!index} : {!item.FirstName}<br/>
</aura:iteration>
Пример В этом примере мне нужно использовать атрибут contact
в ComponentA
но атрибут определяется только на ListItem
компонент, так же, как aura:iteration
что вам не нужно определять index
использовать это:
Componenta
<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>
Элемент списка:
<aura:component>
<aura:attribute name="contact" type="Contact"/>
<aura:attribute name="body" type="Aura.Component[]"/>
{!v.body}
</aura:component>
Другой пример:
Представьте себе customLookup, который позволяет разработчику, использующему этот универсальный компонент, передавать html внутри компонента, чтобы иметь персонализированный элемент списка.
Использование по умолчанию <c:customLookup apiName="Contact" selectedId="{!v.contactId}"/>
Представьте себе, что результат равняется тому, что предлагает Salesforce как стандарт.
Но теперь было выдвинуто другое бизнес-требование, чтобы listItem в поиске выглядел по-разному, с разными полями и т. Д. Пример:
<c:customLookup apiName="Contact" aditionalFields="Email">
<icon name="abc"/> this is my new list item {!contact.Email}
</c:customLookup >
Теперь customLookup будет отображаться с новым listItem, переданным разработчиком, с контактным Email.