使用force:recordData将记录添加到Salesforce中的Campaign对象中>>

问题描述 投票:0回答:1

我正在尝试创建一个将记录添加到Campaign对象的表单。我对Salesforce并不陌生,一直在努力弄清楚如何进行这项工作以及我的理解差距在哪里。

这是我的组件代码:

<aura:attribute name="newCampaign" type="Object"/>
<aura:attribute name="simpleNewCampaign" type="Object"/>
<aura:attribute name="newCampaignError" type="String"/>
<aura:attribute name="recordId" type="String"/>

<aura:handler name="init" value="{!this}" action="{!c.doInit}"/>

<force:recordData aura:id="campaignRecordCreator"
                  recordId = "{!v.recordId}"
                  targetRecord="{!v.newCampaign}"
                  targetFields ="{!v.simpleNewCampaign}"
                  targetError="{!v.newCampaignError}"
                  mode="EDIT"
                  layoutType="FULL" />

<!-- Display the new contact form -->
<div>
    <lightning:card iconName="action:new_campaign" title="Create Campaign">
        <div class="slds-p-horizontal--small">
              <lightning:input type="string" name="name" label="Name" value=""/>
              <lightning:input type="date" name="StartDate" label="Start Date" value=""/>
              <lightning:input type="date" name="EndDate" label="End Date" value=""/>
              <lightning:select name="Venue_State__c" label="State" required="">
                  <option value="">choose one...</option>
                  <option value="1">AL</option>
                  <option value="2">AK</option>
                  <option value="3">AZ</option>
                  <option value="4">AR</option>
                  <option value="5">CA</option>
                  <option value="6">CO</option>
                  <option value="7">CT</option>
                  <option value="8">DE</option>
                  <option value="9">FL</option>
                  <option value="10">GA</option>
                  <option value="11">HI</option>
                  <option value="12">ID</option>
                  <option value="13">IL</option>
                  <option value="14">IN</option>
                  <option value="15">IA</option>
                  <option value="16">KS</option>
                  <option value="17">KY</option>
                  <option value="18">LA</option>
                  <option value="19">ME</option>
                  <option value="20">MD</option>
                  <option value="21">MA</option>
                  <option value="22">MI</option>
                  <option value="23">MN</option>
                  <option value="24">MS</option>
                  <option value="25">MO</option>
                  <option value="26">MT</option>
                  <option value="27">NE</option>
                  <option value="28">NV</option>
                  <option value="29">NH</option>
                  <option value="30">NJ</option>
                  <option value="31">NM</option>
                  <option value="32">NY</option>
                  <option value="33">NC</option>
                  <option value="34">ND</option>
                  <option value="35">OH</option>
                  <option value="36">OK</option>
                  <option value="37">OR</option>
                  <option value="38">PA</option>
                  <option value="39">RI</option>
                  <option value="40">SC</option>
                  <option value="41">SD</option>
                  <option value="42">TN</option>
                  <option value="43">TX</option>
                  <option value="44">UT</option>
                  <option value="45">VT</option>
                  <option value="46">VA</option>
                  <option value="47">WA</option>
                  <option value="48">WV</option>
                  <option value="49">WI</option>
                  <option value="50">WY</option>
              </lightning:select>
              <lightning:input type="string" name="Description" label="Description" value=""/>
              <lightning:select name="Type" label="Category">
                  <option value="">choose one...</option>
                  <option value="1">ACCE Conference</option>
                  <option value="2">ALEC Conference</option>
                  <option value="3">Annual Meeting</option>
                  <option value="4">Auction</option>
                  <option value="5">Coalition Event</option>
                  <option value="6">Conference</option>
                  <option value="7">Dinner</option>
                  <option value="8">Donor Appeal</option>
                  <option value="9">Lisa Travel</option>
                  <option value="10">Marketing</option>
                  <option value="11">Membership Appeal</option>
                  <option value="12">Newsletter</option>
                  <option value="13">Staff State Travel</option>
                  <option value="14">Subscription</option>
                  <option value="15">Task Force/Center Event</option>
                  <option value="16">Task Force Update</option>
                  <option value="17">Dinner</option>
                  <option value="18">Donor Appeal</option>
                  <option value="19">Lisa Travel</option>
                  <option value="20">General Meeting</option>
              </lightning:select>
              <lightning:select name="Status" label="Status" value="">
                  <option value="">choose one...</option>
                  <option value="1">Tentative</option>
                  <option value="2">Planned</option>
                  <option value="3">In Progress</option>
                  <option value="4">Completed</option>
                  <option value="5">Aborted</option>
                  <option value="2">Idea</option>
              </lightning:select>
              <lightning:input type="checkbox" label="Add to Public Caldendar" name="Show_on_Public_Calendar__c" checked="true"/>
              <br/>
              <lightning:button label="Submit" variant="brand" onclick="{!c.handleSaveCampaign}"/>
        </div>
    </lightning:card>
</div>

<!-- Display Lightning Data Service errors -->
<aura:if isTrue="{!not(empty(v.newCampaignError))}">
    <div class="recordError">
        {!v.newCampaignError}</div>
</aura:if>

和控制器:

handleSaveCampaign: function(component, event, helper) {
    if(helper.validateCampaignForm(component)) {
        component.set("v.simpleNewCampaign.recordId", component.get("v.recordId"));
        component.find("campaignRecordCreator").saveRecord(function(saveResult) {
            if (saveResult.state === "SUCCESS" || saveResult.state === "DRAFT") {
                // record is saved successfully
                var resultsToast = $A.get("e.force:showToast");
                resultsToast.setParams({
                    "title": "Saved",
                    "message": "The record was saved."
                });
                resultsToast.fire();

            } else if (saveResult.state === "INCOMPLETE") {
                // handle the incomplete state
                console.log("User is offline, device doesn't support drafts.");
            } else if (saveResult.state === "ERROR") {
                // handle the error state
                console.log('Problem saving campaign, error: ' + JSON.stringify(saveResult.error));
            } else {
                console.log('Unknown problem, state: ' + saveResult.state + ', error: ' + JSON.stringify(saveResult.error));
            }
        });
    }
}

})

辅助函数设置为始终返回true。当我在主页上查看此表单时,该表单下方显示“记录不可创建”,并且当我单击“提交”按钮时,出现错误消息:“未捕获的操作失败:c:RecordFormCampaign $ controller $ handleSaveCampaign [无法读取null的属性'recordId']]

创建时是否为添加的记录分配唯一的ID?我不确定在哪里可以找到所需的特定信息。文档中的示例并没有帮助我克服这个问题。

任何帮助将不胜感激。谢谢。

我正在尝试创建一个将记录添加到Campaign对象的表单。我对Salesforce还是很陌生,一直在努力弄清楚如何使这项工作以及我在理解上的不足之处...

salesforce salesforce-lightning
1个回答
0
投票

除非此代码在doInit中,否则我相信错误在于该行

© www.soinside.com 2019 - 2024. All rights reserved.