aura : id 내에서 aura : id를 “ 찾을 ” 가능합니까?

다른 필드 세트를 기반으로하는 필드를 사용하여 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") ); <== ? } ); } }) 

댓글

  • cmp.find("formItems").find("field").get("v.value");와 같은 것입니까?
  • 이 특정 줄에는 오류가 발생합니다. (.. ..) cmp.find("formItems")에는 해당 aura:id에 여러 요소가 있으므로 루프를 사용합니다.

답변

이 “중첩 된 찾기”(그 자체로)가 불가능한 것 같습니다. 저는 init에 각각의 lightning:layoutItem와 각각 중첩 된 lightning:inputField를 동적으로 생성하기로했습니다. 내 구성 요소에 대한 처리기. 이를 통해 각 개별 구성 요소를 만들 때 aura:id를 할당 할 수있었습니다.

Answer

lightning:inputField aura id에 foreach를 사용해야합니다. 그러면 입력 필드 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") ); <== ? } ); } 

댓글

  • 사용 사례가 제 예제와 정확히 동일한 시나리오에서 작동합니다. 불행히도 (그리고 이것이 좋지 않은 관행이라면 사과드립니다) 내 예는 정확한 사용 사례가 아닙니다. 나는 요점을 너무 많이하지 않고 답을 찾기 위해 그것을 단순화하려고 노력했습니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다