如何从动态创建的闪电组件中获取值?

时间:2017-04-27 10:47:31

标签: javascript dynamic salesforce salesforce-lightning

我正在开发一个Lightning应用程序,我正在动态创建组件。截至目前,代码工作正常,没有错误。但我的问题是我们如何从中获取价值。

假设这是父控制器类,

clickMoreFilter: function(cmp, event, helper) {
       $A.createComponent(
        "c:AccountDynamicForm",
        {
            "aura:id": "findableAuraId",
            "label": "Press Me",
            "press": cmp.getReference("c.clickCreateExpense")
        },

        function(newButton, status, errorMessage){
            //Add the new button to the body array
            if (status === "SUCCESS") {
                var body = cmp.get("v.body");
                var newb = newButton.getElement('levels3');
                console.log('checkCmp'+newb);
                body.push(newButton);
                cmp.set("v.body", body);
            }
            else if (status === "INCOMPLETE") {
                alert("No response from server or client is offline.")
                // Show offline error
            }
                else if (status === "ERROR") {
                    alert("Error: " + errorMessage);
                    // Show error message
                }

        }
    );
},

这是我正在创建的动态组件:                          

<div aria-labelledby="newexpenseform">
    <!-- CREATE NEW EXPENSE FORM -->
    <br></br>
    <form class="slds-form--inline">
        <div class="slds-form-element slds-is-required">
            <div class="slds-form-element__control">
                <ui:inputSelect aura:id="accIndustry" class="slds-select"/>
            </div>

        </div>

        <div class="slds-form-element slds-is-required">
            <div class="slds-form-element__control">
                <ui:inputSelect aura:id="levels3"  class="slds-input">
                    <aura:iteration items="{!v.contactLevel1}" var="level">
                        <ui:inputSelectOption text="{!level}" label="{!level}"/>
                    </aura:iteration>
                </ui:inputSelect>
            </div>
        </div>

        <div class="slds-form-element">
            <div class="slds-form-element__control" onfocusout="{!c.clickCreateExpense}">
                <ui:inputText aura:id="inputValue" 
                              class="slds-input"
                              labelClass="slds-form-element__label"
                              />
            </div>
        </div>
    </form>
    <!-- / CREATE NEW EXPENSE FORM -->
</div>

现在如何从动态组件获取值到父组件? 请帮我解决这个问题。提前谢谢。

1 个答案:

答案 0 :(得分:0)

我认为将此类问题发布到SSE可能会更好。

我还建议使用Lightning Events。 使用Lightning事件,您可以定义要在子组件内部触发的事件,并在父组件中处理它,忽略子组件是否是动态创建的。

我已经描述过a event creation and subscribing in my post on my blog