You need to sign in to do that
Don't have an account?
Pradeepkumar Dani 5
Challenge Not yet complete... here's what's wrong: The 'accEdit' Lightning Component does not appear to be checking if 'v.recordSaveError' is true.
Somehow I was not able to complete this challenge due to above error:
Please help, Thanks :)
<aura:component implements="flexipage:availableForRecordHome,force:hasRecordId"> <aura:attribute name="accountRecord" type="Account"/> <aura:attribute name="record" type="Object"/> <aura:attribute name="recordSaveError" type="String" default=""/> <force:recordData aura:id="recordHandler" recordId="{!v.recordId}" layoutType="FULL" targetRecord="{!v.record}" targetFields="{!v.accountRecord}" targetError="{!v.recordSaveError}" mode="EDIT" fields="Name"/> <!-- Display an editing form --> <div class="Record Details"> <lightning:card iconName="action:edit" title="Edit Account"> <div class="slds-p-horizontal--small"> <lightning:input label="Account Name" value="{!v.accountRecord.Name}" name="Account Name" /> <br/> <lightning:button label="Save Account" onclick="{!c.handleSaveRecord}" class="slds-m-top--medium"/> </div> </lightning:card> </div> <!-- Display error message --> <aura:if isTrue="{!not(empty(v.recordSaveError))}"> Error: <ui:outputText value="{!v.recordSaveError}"/> </aura:if> </aura:component>
({ handleSaveRecord : function(component, event, helper) { component.find("recordHandler").saveRecord($A.getCallback(function(saveResult) { if (saveResult.state === "SUCCESS" || saveResult.state === "DRAFT") { // handle component related logic in event handler component.set("v.recordSaveError", ""); } else if (saveResult.state === "INCOMPLETE") { console.log("User is offline, device doesn't support drafts."); } else if (saveResult.state === "ERROR") { console.log('Problem saving record, error: ' + JSON.stringify(saveResult.error)); var errMsg = ""; // saveResult.error is an array of errors, // so collect all errors into one message for (var i = 0; i < saveResult.error.length; i++) { errMsg += saveResult.error[i].message + "\n"; } component.set("v.recordSaveError", errMsg); } else { console.log('Unknown problem, state: ' + saveResult.state + ', error: ' + JSON.stringify(saveResult.error)); } })); } })
Please help, Thanks :)
I found the issue ( after a bilion attempts! ). Challenge evalution was looking for code something like below.
All Answers
Even checked with follwing way of achieving same thing:
Its still not passing :(
I found the issue ( after a bilion attempts! ). Challenge evalution was looking for code something like below.
<aura:if isTrue="{!not(empty(v.recordSaveError))}">
<div class="recordError">
{!v.recordSaveError}</div>
</aura:if>
accEdit.cmp
<aura:component implements="force:hasRecordId,flexipage:availableForRecordHome">
<aura:attribute name="record"
type="Object"
description="The record object to be displayed"/>
<aura:attribute name="accountRecord"
type="Object"
description="A simplified view record object to be displayed"/>
<aura:attribute name="recordSaveError"
type="String"
description="An error message bound to force:recordData"/>
<force:recordData aura:id="accountRecordId"
recordId="{!v.recordId}"
fields="Name"
mode="EDIT"
targetRecord="{!v.record}"
targetFields="{!v.simpleRecord}"
targetError="{!v.recordSaveError}"/>
<!-- Display an editing form -->
<div class="Record Details">
<lightning:card iconName="action:edit" title="Edit Account">
<div class="slds-p-horizontal--small">
<lightning:input label="Account Name" value="{!v.accountRecord.Name}"/>
<br/>
<lightning:button label="Save Account" variant="brand" onclick="{!c.handleSaveRecord}" />
</div>
</lightning:card>
</div>
<!-- Display Lightning Data Service errors, if any -->
<aura:if isTrue="{!not(empty(v.recordSaveError))}">
<div class="recordError">
{!v.recordSaveError}
</div>
</aura:if>
</aura:component>
accEditController.js
--------------------------
({
handleSaveRecord : function(component, event, helper) {
component.find("accountRecordId").saveRecord($A.getCallback(function(saveResult) {
if (saveResult.state === "SUCCESS" || saveResult.state === "DRAFT") {
console.log("Save completed successfully.");
} else if (saveResult.state === "INCOMPLETE") {
console.log("User is offline, device doesn't support drafts.");
} else if (saveResult.state === "ERROR") {
console.log('Problem saving record, error: ' +
JSON.stringify(saveResult.error));
var errMsg = "";
for (var i = 0; i < saveResult.error.length; i++) {
errMsg += saveResult.error[i].message + "\n";
}
component.set("v.recordSaveError", errMsg);
} else {
console.log('Unknown problem, state: ' + saveResult.state + ', error: ' + JSON.stringify(saveResult.error));
}
}));
}
})