異なるフィールドセットに基づくフィールドを使用してlightning:recordEditForm
を構築しているコンポーネントがあります。このような小さなもの:
<aura:component> <aura:attribute name="fieldApiNames" type="List" /> <aura:attribute name="showSpinner" type="Boolean" default="true" /> <aura:if isTrue="{!v.showSpinner}"> <lightning:spinner alternativeText="Loading..." /> </aura:if> <lightning:recordEditForm onload="{!c.handleLoad}" objectApiName="Account"> <lightning:messages /> <lightning:layout multipleRows="true"> <aura:iteration items="{!v.fieldApiNames}" var="api"> <lightning:layoutItem aura:id="formItems" size="6"> <div aura:id="top-div" /> <lightning:inputField aura:id="field" fieldName="{!api}" /> <div aura:id="bottom-div" /> </lightning:layoutItem> </aura:iteration> </lightning:layout> </lightning:recordEditForm> <lightning:button title="Show Field Values" onclick="{!c.handleButton}" /> </aura:component>
aura:id
<でfind()
を呼び出す場合/ div>が複数回発生すると、そのaura:id
ですべての配列が返されます。 find()
呼び出しで返された要素のいずれかの本体内の要素にアクセスしたい場合は、aura:id
でアクセスできますか? handleButton
関数の以下のようなサブ要素の?
({ handleLoad : function(cmp, evt, helper) { cmp.set( "v.showSpinner", false ); }, handleButton : function(cmp, evt, helper) { var first = cmp.get("v.fieldApiNames")[0]; cmp.find("formItems").forEach( function(item) { alert( item.find("field").get("v.value") ); <== ? } ); } })
コメント
回答
この「ネストされた検索」(それ自体)は不可能のようです。各lightning:layoutItem
と、それぞれネストされたlightning:inputField
をinit
に動的に作成することを選択しました。コンポーネントのハンドラー。これにより、個々のコンポーネントを作成するときにaura:id
を割り当てることができました。
回答
foreach
をlightning:inputField
aura idに使用する必要があります。次に、入力フィールドcmpsの配列を取得し、foreachを実行して、試したような値を取得します以下
controller.js
handleButton : function(cmp, evt, helper) { var first = cmp.get("v.fieldApiNames")[0]; cmp.find("field").forEach( function(itemcmp) { alert( itemcmp.get("v.value") ); <== ? } ); }
コメント
- これは、ユースケースが私の例とまったく同じであるシナリオで機能します。残念ながら(これが不適切な方法であった場合はお詫びします)、私の例は私の正確な使用例ではありません。私はそれを単純化して、本質的なざらざらしたものをあまり使わずに答えを見つけようとしていました。
cmp.find("formItems").find("field").get("v.value");
のようなもの?cmp.find("formItems")
でループを使用します。aura:id
には複数の要素があるためです。