Невозможно установить значение динамически для Lightning: InputField - PullRequest
0 голосов
/ 08 октября 2018

Я создал компонент молнии с формой редактирования записи молнии и парой полей.Написал метод Javascript таким образом, чтобы при изменении первого поля на определенное значение второе поле обновлялось.Ниже приведен мой код.

<aura:component implements="force:appHostable">
   <aura:attribute name='test' type='String'/>
   <lightning:recordEditForm 
                          aura:id="editForm"
                          objectApiName="Case"
                          recordTypeId="{XXXXXXXXXXXXX}">
    <div class="slds-col slds-size_1-of-2 slds-p-around_x-small">
        <lightning:inputField aura:id="subject" fieldName="Subject" onchange="{!c.subjectChanged}"/>
    </div>
    <div class="slds-col slds-size_1-of-2 slds-p-around_x-small">
        <lightning:inputField aura:id="description" value="{!v.test}" fieldName="Description"/>
    </div>
</lightning:recordEditForm>
</aura:component>

Ниже приведен код контроллера

({
    subjectChanged : function(component, event, helper) {
        var subjectValue = component.find("subject").get("v.value");
        if(subjectValue === "U") {
            //var descriptionValue = component.find("description");
            //descriptionValue.set("v.value","User");
            component.set('v.test','User');
        }

    }
})
  1. Обновлено поле «Тема» до U, затем описание обновлено до «Пользователь»
  2. Обновите значение поля Описание до XYZ или очистите значение.
  3. Измените поле темы на X, а затем обновите обратно до U.
  4. Обратите внимание, что метод JS был выполнен, но описание не обновленона «Пользователь».

Всякий раз, когда пользователь обновляет поле темы на U, я хочу, чтобы описание было установлено на Пользователь.Есть мысли по этому поводу?

Ответы [ 2 ]

0 голосов
/ 12 марта 2019

Я нашел способ обойти это.
Вы можете связать свое значение inputField с aura:attribute, а затем установить значение aura:attribute.Это особенно полезно для полей поиска в объекте, где использование lightning:input теряет функциональность.
Пример:

<aura:attribute name="myFieldValue" type="string"/>
<lightning:recordEditForm objectApiName="MyObject__c"
        onload="{!c.handleLoad}" 
        onsubmit="{!c.handleSubmit}" 
        onsuccess="{!c.handleSuccess}" 
        onerror="{!c.handleError}">
    <lightning:inputField fieldName="MyLookupField__c" value="{!v.myFieldValue}"/>
</lightning:recordEditForm>

Контроллер Javascript:

somethingHappened: function(newDataValue){
    component.set("v.myFieldValue", newDataValue);
}
0 голосов
/ 22 ноября 2018

Из документации: https://developer.salesforce.com/docs/component-library/bundle/lightning:inputField/documentation

..... Предполагается, что существуют несохраненные изменения, которые не следует перезаписывать .Если вы хотите иметь возможность перезаписывать изменения пользователя, вы можете использовать молнии: ввод вместо ....

...