我正在尝试创建一个将记录添加到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还是很陌生,一直在努力弄清楚如何使这项工作以及我在理解上的不足之处...
除非此代码在doInit中,否则我相信错误在于该行