*** Lightning Message Channel (LMC) ***
1. Vs Code: Create a folder with the name "messagechannels" (under main\default)
2. Vs Code: Create meta file with the name "ChannelName.messageChannel-meta.xml" -
<?xml version="1.0" encoding="UTF-8"?>
<LightningMessageChannel xmlns="http://soap.sforce.com/2006/04/metadata">
<masterLabel>ChannelName</masterLabel>
<isExposed>true</isExposed>
<description>Message Channel used for the communication.</description>
<lightningMessageFields>
<fieldName>fieldData</fieldName>
<description>Variable used for lms data</description>
</lightningMessageFields>
</LightningMessageChannel>
3. Create a VS Page (lmcVfPage) -
<script>
let ChannelNameVar = "{!$MessageChannel.ChannelName__c}";
let subscribedRef;
function publish(){
const payload = {
fieldData: { //this name should be the channel field name
value: 'some data to send'
}
};
sforce.one.publish(ChannelNameVar, payload)
}
function subscribe(){
if(!subscribedRef)
subscribedRef = sforce.one.subscribe(ChannelNameVar, messageHandler, {scope:"APPLICATION"})
}
function unsubscribe(){
if(subscribedRef) {
sforce.one.unsubscribe(subscribedRef);
subscribedRef = null;
}
}
function messageHandler(message){
console.log(`message: ${message.fieldData}`);
}
</script>
4. Create a Aura Component (lmcAura) -
UI -
<lightning:messageChannel type="ChannelName__c" aura:id="ChannelNameId" onMessage="{!c.handleMessage}" scope="APPLICATION"/>
publish: function (cmp, event, helper) {
let msg = cmp.get("v.message")
let message ={
fieldData:{
value: msg
}
}
cmp.find("ChannelNameId").publish(message)
}
handleMessage: function (cmp, message, helper) {
if (message !=null && message.getParam("fieldData") !=null){
console.log(message.getParam("fieldData").value);
}
}
5. Create a LWC Component (lmcLwc) -
import { APPLICATION_SCOPE, publish, createMessageContext, releaseMessageContext, subscribe, unsubscribe } from 'lightning/messageService';
import ChannelNameVar from "@salesforce/messageChannel/ChannelName__c"
LightningElement {
context = createMessageContext();
publishMessage(){
const message = {
fieldData:{
value: 'Some Value'
}
}
publish(this.context, ChannelNameVar, message)
}
subscribeMessage(){
if (this.subscription){
return;
}
this.subscription = subscribe(this.context, ChannelNameVar, (message)=>{
this.handleMessage(message)
}, { scope: APPLICATION_SCOPE})
}
unsubscribeMessage(){
unsubscribe(this.subscription)
this.subscription = null
}
handleMessage(message){
console.log(lmsData? message.lmsData.value : 'No Message');
}
disconnectedCallback() {
releaseMessageContext(this.context)
}
}
5. Create an App Page and add all vf, aura and lwc components.
This site helps to clear your all query. dbrau ba 3rd year result 2021
ReplyDeletebu ba final year result 2021 This is really worth reading. nice informative article.