-
ChatterFeed
-
0Best Answers
-
0Likes Received
-
1Likes Given
-
0Questions
-
1Replies
Lightning Components Basics - Connect to Salesforce with Server-Side Controllers
Hi everyone!
I have a problem with the challenge, my App work fine but I don´t pass the challenge. This is my code:
campingList.cmp:
campingListController.js:
Challenge Not yet complete... here's what's wrong:
The campingList JavaScript helper isn't saving the new record to the database or adding it to the 'items' value provider.
My App save the new record into the database and add it to the "items" list.
Thanks for your answers!
I have a problem with the challenge, my App work fine but I don´t pass the challenge. This is my code:
campingList.cmp:
<aura:component controller="CampingListController"> <ltng:require styles="/resource/SLDS105/assets/styles/salesforce-lightning-design-system-ltng.css"/> <aura:handler name="init" action="{!c.doInit}" value="{!this}"/> <aura:attribute name="newItem" type="Camping_Item__c" default="{ 'sobjectType': 'Camping_Item__c', 'Price__c': 0, 'Quantity__c': 0}"/> <div class="slds-card slds-p-top--medium"> <ui:inputText aura:id="campname" label="Camping Name" value="{!v.newItem.Name}" required="true"/> <ui:inputCheckbox aura:id="packed" label="Packed?" value="{!v.newItem.Packed__c}"/> <ui:inputCurrency aura:id="price" label="Price" value="{!v.newItem.Price__c}" required="true"/> <ui:inputNumber aura:id="quantity" label="Quantity" value="{!v.newItem.Quantity__c}" required="true"/> <ui:button label="Create Camping" press="{!c.clickCreateCamping}"/> </div> <aura:attribute name="items" type="Camping_Item__c[]"/> <div class="slds-card slds-p-top--medium"> <header class="slds-card__header"> <h3 class="slds-text-heading--small">Campings</h3> </header> <section class="slds-card__body"> <div id="list" class="row"> <aura:iteration items="{!v.items}" var="item"> <c:campingListItem item="{!item}"/> </aura:iteration> </div> </section> </div> </aura:component>
campingListController.js:
({ // Load expenses from Salesforce doInit: function(component, event, helper) { // Create the action var action = component.get("c.getItems"); // Add callback behavior for when response is received action.setCallback(this, function(response) { var state = response.getState(); if (component.isValid() && state === "SUCCESS") { component.set("v.items", response.getReturnValue()); } else { console.log("Failed with state: " + state); } }); // Send action off to be executed $A.enqueueAction(action); }, clickCreateCamping: function(component, event, helper) { if(helper.validateCampingForm(component)){ // Create the new expense var newCamping = component.get("v.newItem"); helper.createItem(component, newCamping); } } })campingListHelper.js
({ createItem: function(component, camping) { var action = component.get("c.saveItem"); action.setParams({ "item": camping }); action.setCallback(this, function(response){ var state = response.getState(); if (component.isValid() && state === "SUCCESS") { var campings = component.get("v.items"); campings.push(response.getReturnValue()); component.set("v.items", campings); } }); $A.enqueueAction(action); }, validateCampingForm: function(component) { var validQuantity = true; var validPrice = true; var nameField = component.find("campname"); var campname = nameField.get("v.value"); var quantityField = component.find("quantity"); var quantity = quantityField.get("v.value"); var priceField = component.find("price"); var price = priceField.get("v.value"); if ($A.util.isEmpty(campname) || $A.util.isEmpty(quantity) || $A.util.isEmpty(price)){ validQuantity = false; validPrice = false; nameField.set("v.errors", [{message:"Camping name, quantity or price can't be blank."}]); } else { nameField.set("v.errors", null); } return(validQuantity && validPrice); } })CampingListController.apxc:
public with sharing class CampingListController { @AuraEnabled public static List<Camping_Item__c> getItems() { // Check to make sure all fields are accessible to this user String[] fieldsToCheck = new String[] { 'Id', 'Name', 'Packed__c', 'Price__c', 'Quantity__c' }; Map<String,Schema.SObjectField> fieldDescribeTokens = Schema.SObjectType.Camping_Item__c.fields.getMap(); for(String field : fieldsToCheck) { if( ! fieldDescribeTokens.get(field).getDescribe().isAccessible()) { throw new System.NoAccessException(); return null; } } // Perform isAccessible() checking first, then return [SELECT Id, Name, Packed__c, Price__c, Quantity__c FROM Camping_Item__c]; } @AuraEnabled public static Camping_Item__c saveItem(Camping_Item__c item) { // Perform isUpdatable() checking first, then upsert item; return item; } }I am still getting this error:
Challenge Not yet complete... here's what's wrong:
The campingList JavaScript helper isn't saving the new record to the database or adding it to the 'items' value provider.
My App save the new record into the database and add it to the "items" list.
Thanks for your answers!
- Manuel Casas
- June 13, 2016
- Like
- 6
- Continue reading or reply
Lightning Components Basics - Connect to Salesforce with Server-Side Controllers
Hi everyone!
I have a problem with the challenge, my App work fine but I don´t pass the challenge. This is my code:
campingList.cmp:
campingListController.js:
Challenge Not yet complete... here's what's wrong:
The campingList JavaScript helper isn't saving the new record to the database or adding it to the 'items' value provider.
My App save the new record into the database and add it to the "items" list.
Thanks for your answers!
I have a problem with the challenge, my App work fine but I don´t pass the challenge. This is my code:
campingList.cmp:
<aura:component controller="CampingListController"> <ltng:require styles="/resource/SLDS105/assets/styles/salesforce-lightning-design-system-ltng.css"/> <aura:handler name="init" action="{!c.doInit}" value="{!this}"/> <aura:attribute name="newItem" type="Camping_Item__c" default="{ 'sobjectType': 'Camping_Item__c', 'Price__c': 0, 'Quantity__c': 0}"/> <div class="slds-card slds-p-top--medium"> <ui:inputText aura:id="campname" label="Camping Name" value="{!v.newItem.Name}" required="true"/> <ui:inputCheckbox aura:id="packed" label="Packed?" value="{!v.newItem.Packed__c}"/> <ui:inputCurrency aura:id="price" label="Price" value="{!v.newItem.Price__c}" required="true"/> <ui:inputNumber aura:id="quantity" label="Quantity" value="{!v.newItem.Quantity__c}" required="true"/> <ui:button label="Create Camping" press="{!c.clickCreateCamping}"/> </div> <aura:attribute name="items" type="Camping_Item__c[]"/> <div class="slds-card slds-p-top--medium"> <header class="slds-card__header"> <h3 class="slds-text-heading--small">Campings</h3> </header> <section class="slds-card__body"> <div id="list" class="row"> <aura:iteration items="{!v.items}" var="item"> <c:campingListItem item="{!item}"/> </aura:iteration> </div> </section> </div> </aura:component>
campingListController.js:
({ // Load expenses from Salesforce doInit: function(component, event, helper) { // Create the action var action = component.get("c.getItems"); // Add callback behavior for when response is received action.setCallback(this, function(response) { var state = response.getState(); if (component.isValid() && state === "SUCCESS") { component.set("v.items", response.getReturnValue()); } else { console.log("Failed with state: " + state); } }); // Send action off to be executed $A.enqueueAction(action); }, clickCreateCamping: function(component, event, helper) { if(helper.validateCampingForm(component)){ // Create the new expense var newCamping = component.get("v.newItem"); helper.createItem(component, newCamping); } } })campingListHelper.js
({ createItem: function(component, camping) { var action = component.get("c.saveItem"); action.setParams({ "item": camping }); action.setCallback(this, function(response){ var state = response.getState(); if (component.isValid() && state === "SUCCESS") { var campings = component.get("v.items"); campings.push(response.getReturnValue()); component.set("v.items", campings); } }); $A.enqueueAction(action); }, validateCampingForm: function(component) { var validQuantity = true; var validPrice = true; var nameField = component.find("campname"); var campname = nameField.get("v.value"); var quantityField = component.find("quantity"); var quantity = quantityField.get("v.value"); var priceField = component.find("price"); var price = priceField.get("v.value"); if ($A.util.isEmpty(campname) || $A.util.isEmpty(quantity) || $A.util.isEmpty(price)){ validQuantity = false; validPrice = false; nameField.set("v.errors", [{message:"Camping name, quantity or price can't be blank."}]); } else { nameField.set("v.errors", null); } return(validQuantity && validPrice); } })CampingListController.apxc:
public with sharing class CampingListController { @AuraEnabled public static List<Camping_Item__c> getItems() { // Check to make sure all fields are accessible to this user String[] fieldsToCheck = new String[] { 'Id', 'Name', 'Packed__c', 'Price__c', 'Quantity__c' }; Map<String,Schema.SObjectField> fieldDescribeTokens = Schema.SObjectType.Camping_Item__c.fields.getMap(); for(String field : fieldsToCheck) { if( ! fieldDescribeTokens.get(field).getDescribe().isAccessible()) { throw new System.NoAccessException(); return null; } } // Perform isAccessible() checking first, then return [SELECT Id, Name, Packed__c, Price__c, Quantity__c FROM Camping_Item__c]; } @AuraEnabled public static Camping_Item__c saveItem(Camping_Item__c item) { // Perform isUpdatable() checking first, then upsert item; return item; } }I am still getting this error:
Challenge Not yet complete... here's what's wrong:
The campingList JavaScript helper isn't saving the new record to the database or adding it to the 'items' value provider.
My App save the new record into the database and add it to the "items" list.
Thanks for your answers!
- Manuel Casas
- June 13, 2016
- Like
- 6
- Continue reading or reply