This post explains how to invoke an apex from lightning web components.
to import apex class methods we use @salesforce/apex scoped module
apexMethod —>The imported symbol that identifies the Apex method.
Classname —> The name of the Apex class.
Namespace —> The namespace of the Salesforce organization.
Ex:
to import apex class methods we use @salesforce/apex scoped module
Syntax
import apexMethod from '@salesforce/apex/Namespace.Classname.apexMethod';
Classname —> The name of the Apex class.
Namespace —> The namespace of the Salesforce organization.
Ex:
import getAccounts from '@salesforce/apex/LWCControllerTest.getAccounts'
import saveAccount from '@salesforce/apex/LWCControllerTest.saveAccount'
Demo
LWCApexMethodDemoController.clspublic inherited sharing class LWCApexMethodDemoController {
@AuraEnabled(Cacheable = true)
public static List<Account> getAccounts(){
return [SELECT Id, Name, Phone, AccountNumber, Industry, CreatedDate FROM Account ORDER BY createddate DESC Limit 10];
}
}
LWCApexMethodDemo.html
<template>
<div class="slds-theme_default">
<center>
<p style="font-size:medium;font-family:sans-serif;padding:10px;margin:5px">Invoke Apex Method Demo</p>
<lightning-button label="getAccounts" variant="brand" icon-name="standard:account" onclick={getallaccounts}></lightning-button>
</center><br/><br/>
<template if:true={Accounts}>
<table class="slds-table slds-table_cell-buffer slds-table_bordered">
<thead>
<tr class="slds-line-height_reset">
<th class="slds-text-title_caps" scope="col">
<div class="slds-truncate" title="S.No">S.No</div>
</th>
<th class="slds-text-title_caps" scope="col">
<div class="slds-truncate" title="Account Name">Account Name</div>
</th>
<th class="slds-text-title_caps" scope="col">
<div class="slds-truncate" title="Phone">Phone</div>
</th>
<th class="slds-text-title_caps" scope="col">
<div class="slds-truncate" title="AccountNumber">AccountNumber</div>
</th>
<th class="slds-text-title_caps" scope="col">
<div class="slds-truncate" title="Industry">Industry</div>
</th>
</tr>
</thead>
<tbody>
<template for:each={Accounts} for:item="acc" for:index="indexvar">
<tr class="slds-hint-parent" key={acc.id}>
<td data-label="S.No">
<div class="slds-truncate" title={indexvar}>{indexvar}</div>
</td>
<td data-label="Account Name">
<div class="slds-truncate" title={acc.Name}>{acc.Name}</div>
</td>
<td data-label="Account Name">
<div class="slds-truncate" title={acc.Phone}>{acc.Phone}</div>
</td>
<td data-label="Account Name">
<div class="slds-truncate" title={acc.AccountNumber}>{acc.AccountNumber}</div>
</td>
<td data-label="Account Name">
<div class="slds-truncate" title={acc.Industry}>{acc.Industry}</div>
</td>
</tr>
</template>
</tbody>
</table>
</template>
</div>
</template>
LWCApexClassDemo.js
import {LightningElement, api, track} from 'lwc';
import {ShowToastEvent} from 'lightning/platformShowToastEvent'; // import toast message event .
// import apex class and it's methods.
import getAccounts from '@salesforce/apex/LWCApexMethodDemoController.getAccounts'
export default class LWCApexMethodDemo extends LightningElement {
@track Accounts; // return Accounts from apex class.
@api Account;
@track error; // to show error message from apex controller.
@track success; // to show succes message in ui.
// method for get accounts.
getallaccounts() {
getAccounts()
.then(result => {
this.Accounts = result;
this.error = undefined;
this.dispatchEvent(
new ShowToastEvent({
title: ' Accounts Retrieve successfully',
message: 'Accounts Retrieve success, no of records-->' + result.length,
variant: 'success',
}),
);
})
.catch(error => {
this.error = error;
this.dispatchEvent(
new ShowToastEvent({
title: 'Error while getting Accounts',
message: error.message,
variant: 'error',
}),
);
this.accounts = undefined;
});
}
}
LWCApexClassDemo.js-meta.xml<?xml version="1.0" encoding="UTF-8"?>
<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata" fqn="LWCApexMethodDemo">
<apiVersion>45.0</apiVersion>
<isExposed>false</isExposed>
<targets>
<target>lightning__AppPage</target>
<target>lightning__RecordPage</target>
<target>lightning__HomePage</target>
</targets>
</LightningComponentBundle>
Happy Learning!!!
i like wireless internet because you can surf anywhere and you can avoid those ethernet cables; telecommunications call center
ReplyDeletePondering what web templates are? All things considered, to place it in basic terms, web templates are semi-completed, pre planned web pages that can be utilized to make and host websites in less time. free Jekyll themes
ReplyDelete