无法为 Lightning:InputField 动态设置值

Posted

技术标签:

【中文标题】无法为 Lightning:InputField 动态设置值【英文标题】:Unable to set value dynamically for Lightning:InputField 【发布时间】:2019-03-13 05:51:32 【问题描述】:

我创建了一个带有闪电记录编辑表单和几个字段的闪电组件。编写了一个 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,然后描述更新为“用户” 将描述字段值更新为 XYZ 或清除该值。 将主题字段更改为 X,然后更新回 U。 请注意,JS 方法已执行,但描述未更新为“用户”。

每当用户将主题字段更新为 U 时,我希望将描述设置为用户。对此有什么想法吗?

【问题讨论】:

【参考方案1】:

来自文档:https://developer.salesforce.com/docs/component-library/bundle/lightning:inputField/documentation

.....假设存在不应被覆盖的未保存更改。如果您希望能够覆盖用户更改,您可以改用闪电:输入....

【讨论】:

感谢 Bohdan Myrko。我只使用 Lightning:input 修复了这个问题,并且对为什么 Lightning:inputfield 无法正常工作更加好奇。我认为我忽略或错过了文档“假设存在不应覆盖的未保存更改”中的这一部分。【参考方案2】:

我找到了解决办法。 您可以将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);

【讨论】:

以上是关于无法为 Lightning:InputField 动态设置值的主要内容,如果未能解决你的问题,请参考以下文章

无法在 google colab 上导入 pytorch_lightning

无法在 Google Colab 上安装 Pytorch Lightning Flash

无法从 Pytorch-Lightning 中的检查点加载模型

无法用 Lightning:navigation 或 force:navigateToSObject 替换“force:navigateToURL”

Unity3DUGUI之InputField

P3515 [POI2011]Lightning Conductor(决策单调性分治)