Skip to content

Instantly share code, notes, and snippets.

Last active June 14, 2018 11:19
What would you like to do?
Salesforce Lightning: Setting a conditional default value blocks any further changes to the attribute. Including object will allow changes but only from the object.
<aura:component implements="flexipage:availableForAllPageTypes">
<!-- Simple example of conditional default blocking changes -->
<aura:attribute name="myString" type="string" default="{!if(false, 'Default Val', 'Other Default')}"/>
<aura:attribute name="mySimpleString" type="string" default="Default Val"/>
<!-- Conditional default on object value will update, but will not allow external changes -->
<aura:attribute name="myObj" type="object"/>
<aura:attribute name="myObjString" type="string" default="{!if(empty(v.myObj), 'Default Val', v.myObj.val)}"/>
<aura:handler name="init" value="{!this}" action="{!c.doInit}" />
<div class="slds-card">
{!v.myString} <!-- Will always output 'Other Default', even if changed later by doInit -->
{!v.mySimpleString} <!-- Will be changed to 'Set Directly' by doInit -->
{!v.myObjString} <!-- Will be changed to the value of v.myObj.val when it changes -->
doInit : function(component, event, helper) {
component.set('v.myString', 'Set Directly');
component.set('v.mySimpleString', 'Set Directly');
component.set('v.myObj', {val: 'Set in Object'});
component.set('v.myObjString', 'Set Directly');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment