无法为 Lightning:InputField 动态设置值
Unable to set value dynamically for Lightning:InputField
我创建了一个带有闪电记录编辑表单和几个字段的闪电组件。编写了一个 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');
}
}
})
- 将主题字段更新为 U,然后将描述更新为 'User'
- 将描述字段值更新为 XYZ 或清除该值。
- 将主题字段更改为 X,然后更新回 U。
- 注意 JS 方法已执行,但描述未更新为 'User'。
每当用户将主题字段更新为 U 时,我希望将描述设置为用户。对此有什么想法吗?
来自文档:https://developer.salesforce.com/docs/component-library/bundle/lightning:inputField/documentation
.....假设有未保存的更改不应被覆盖。如果您希望能够覆盖用户更改,您可以使用 lightning:input 而不是 ...
我找到了解决方法。
您可以将 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);
}
我创建了一个带有闪电记录编辑表单和几个字段的闪电组件。编写了一个 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');
}
}
})
- 将主题字段更新为 U,然后将描述更新为 'User'
- 将描述字段值更新为 XYZ 或清除该值。
- 将主题字段更改为 X,然后更新回 U。
- 注意 JS 方法已执行,但描述未更新为 'User'。
每当用户将主题字段更新为 U 时,我希望将描述设置为用户。对此有什么想法吗?
来自文档:https://developer.salesforce.com/docs/component-library/bundle/lightning:inputField/documentation
.....假设有未保存的更改不应被覆盖。如果您希望能够覆盖用户更改,您可以使用 lightning:input 而不是 ...
我找到了解决方法。
您可以将 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);
}