Spinners are CSS loading indicators that should be shown when retrieving data or performing any action which take time. lightning:spinner displays an animated spinner image to indicate that a request is loading.
What is aura:waiting and aura:doneWaiting?
aura:waiting : This event is automatically fired when a server side apex action is added using $A.enqueueAction(). This event is always fired before aura:doneWaiting. It is handled by a client-side (javaScript)controller. One component can have only one tag to handle this event.
- This event indicates that the app is waiting for the response to a server request.
- This event is fired before aura:doneWaiting.
- This event is automatically fired when a server-side action is added using $A.enqueueAction().
- The aura:waiting event is handled by a client-side controller.
- A component can have only one <aura:handler> tag to handle this event.
aura:doneWaiting : This event is automatically fired when all server response(apex) complete. aura:doneWaiting indicate that the lightning component is done waiting for server response. This event is always fired after aura:waiting. It is handled by a client-side (javaScript)controller. One component can have only one tag to handle this event.
- This event indicates that the app is done waiting for the response to a server request.
- This event is fired after aura:waiting.
- This event is automatically fired if no more response from the server is expected.
- This event is also handled by a client-side controller.
Lightning Loading Spinner Example :
<
aura:component
controller
=
"AccountController"
>
<!--Aura handler with waiting and donewaiting events declare--> <
aura:handler
event
=
"aura:waiting"
action
=
"{!c.showSpinner}"
/>
<
aura:handler
event
=
"aura:doneWaiting"
action
=
"{!c.hideSpinner}"
/>
<!--loading spinner start-->
<
div
class
=
"exampleHolder"
>
<
lightning:spinner
aura:id
=
"mySpinner"
class
=
"slds-hide"
/>
</
div
>
<!-- Loading spinner end-->
<!-- Rest of the code goes here
-->
</
aura:component
>
lightning spinner javascript controller
({
// This function automatic called by aura:waiting event
showSpinner: function(component, event, helper) {
// remove slds-hide class from mySpinner
$A.util.removeClass(component.find("mySpinner"), "slds-hide");
},
// This function automatic called by aura:doneWaiting event
hideSpinner : function(component,event,helper){
// add slds-hide class to mySpinner
$A.util.addClass(component.find("mySpinner"), "slds-hide");
}
})