Expand my Community achievements bar.

SOLVED

How to Subtract numbers in Slightly

Avatar

Level 2

Hi Team,

 

I would like to subtract two numbers in Slightly. I  have used  "-" symbol but its not working.

 

Example :

${itemList.Count-1}

 

Regards

MADHU

 

 

1 Accepted Solution

Avatar

Correct answer by
Community Advisor

Hi,

 

You cannot subtract using HTL (formerly known as Sightly). The purpose of Sightly is to be a template language, not a logical operator. For this type of scenario, the best approach is to use a Sling Model, where you can perform any custom operation and then expose it back to the HTML.

 

However, if you are trying to manipulate a list index, keep in mind you have these options available: 

itemList: Object holding the following properties:

  • index: zero-based counter ( 0..length-1).
  • count: one-based counter ( 1..length).
  • first: true if the current item is the first item.
  • middle: true if the current item is neither the first nor the last item.
  • last: true if the current item is the last item.
  • odd: true if index is odd.
  • even: true if index is even.

 

If you need to use the Sling model approach instead you could try something like this:
Sling Model:

@Model(adaptables = Resource.class)
public class MyModel {
    
    @inject
    private String propertyFromDialog;

    @PostConstruct
    protected void init() {
        
    }

    //Do your logic below. You can use the properties from the dialog once injected
    public String getSubstraction() {
        return 1;
    }
}

Then in HTL

<sly data-sly-use.model="my.java.package.MyModel" />
<p>The result is: ${model.substraction}</p>

Please find more information here: https://redquark.org/aem/day-07-sling-models/#usage-in-htl

https://experienceleague.adobe.com/docs/experience-manager-learn/getting-started-wknd-tutorial-devel... 

 

Hope this helps



Esteban Bustamante

View solution in original post

3 Replies

Avatar

Correct answer by
Community Advisor

Hi,

 

You cannot subtract using HTL (formerly known as Sightly). The purpose of Sightly is to be a template language, not a logical operator. For this type of scenario, the best approach is to use a Sling Model, where you can perform any custom operation and then expose it back to the HTML.

 

However, if you are trying to manipulate a list index, keep in mind you have these options available: 

itemList: Object holding the following properties:

  • index: zero-based counter ( 0..length-1).
  • count: one-based counter ( 1..length).
  • first: true if the current item is the first item.
  • middle: true if the current item is neither the first nor the last item.
  • last: true if the current item is the last item.
  • odd: true if index is odd.
  • even: true if index is even.

 

If you need to use the Sling model approach instead you could try something like this:
Sling Model:

@Model(adaptables = Resource.class)
public class MyModel {
    
    @inject
    private String propertyFromDialog;

    @PostConstruct
    protected void init() {
        
    }

    //Do your logic below. You can use the properties from the dialog once injected
    public String getSubstraction() {
        return 1;
    }
}

Then in HTL

<sly data-sly-use.model="my.java.package.MyModel" />
<p>The result is: ${model.substraction}</p>

Please find more information here: https://redquark.org/aem/day-07-sling-models/#usage-in-htl

https://experienceleague.adobe.com/docs/experience-manager-learn/getting-started-wknd-tutorial-devel... 

 

Hope this helps



Esteban Bustamante

Avatar

Level 2

Hi EstebanBustamante,

 

Thanks for your reply. Let me implements suggested approach in sling modals.

 

Regards

MADHU

Avatar

Administrator

@madhu61 Do you find the suggestion from Esteban useful? Please let us know if more information is required. Otherwise, please mark the answer as correct for posterity. If you have found out solution yourself, please share it with the community.



Kautuk Sahni