sightly template to populate model class data | Community
Skip to main content
Level 4
Aug 18, 2017 6:28 AM UTC
Solved

sightly template to populate model class data

Hi All,

I have a requirement, where i will take input from author in <body> via component and display it in <head> section of the page. e.g. any script tag.

I am trying to use <data-sly-template>. Though, i am getting all values when i am using simple text. But when i am trying to access model class variables, i am getting null or no data.

    This is working fine: (written in component html and accessed in another html via data-sly-call)

       <template data-sly-template.tags>

                 some random text

       </template>

I want this, and its not working: (same as above)

<template data-sly-template.tags>

     ${tagModel.tagContent}

</template>

Info:I am creating the template in component html and want to use it in basePage.html.

         if i try to print  ${tagModel.tagContent} in the component html, i am getting value of tagContent.

Please help.

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Feike_Visser1
Feike_Visser1Accepted solution
Employee
Aug 21, 2017 12:40 PM UTC

try page properties, without jcr:content

${pageProperties['iparsys/custom_tag/tagcontent']}

18 replies

Feike_Visser1
Employee
Aug 18, 2017 12:39 PM UTC
Level 4
Aug 18, 2017 11:12 AM UTC

I passed model into template.

How do i use model parameters in template so that when i call it externally, i get the model data?

Any reference to the same will be appreciated.

Translate
Feike_Visser1
Employee
Aug 18, 2017 10:19 AM UTC

You need to define parameters in your data-sly-template.

Also remember that only the data-sly-template gets executed when it is called externally.

Translate
Feike_Visser1
Employee
Aug 18, 2017 10:11 AM UTC

Can you pass in the model into the template?

Translate
Level 4
Aug 18, 2017 10:10 AM UTC

Kunal,

Please refer the code i sent now.

I am initializing the the tagModel in component html. retrieving value from it and creating template.

I tried initializing tagModel object in base page as well, but the values were null.

Translate
Level 4
Aug 18, 2017 10:07 AM UTC

file: custom_tag_template.html

<sly data-sly-use.customTagModel="com.barclays.aem.bccl.core.models.CustomtagModel">

     ${customTagModel.tagcontent}  <-- this works fine, i can see tagcontent on page   

        <template data-sly-template.tag>

                 ${customTagModel.tagcontent}                  <--so I made it a template

       </template>

</sly>

file: basePage.html

calling template values using data-sly-call, since template is present other file data-sly-use is used

<sly data-sly-use.tags="/apps/myproject/components/content/custom_tag/custom_tag_template.html"> 

<sly data-sly-call='${tags.tag @ tagContent="${properties.priority}"}'>    <--this is null

Translate
Kunal_Gaba_
New Participant
Aug 18, 2017 9:32 AM UTC

Where are you initializing the tagModel object ? If you are doing that in component HTML and expecting it to be available in base page then it won't be available since base page will always be rendered before the component inside the <body> tag.  You should initialize the model object in base page HTML itself.

Translate
Feike_Visser1
Employee
Aug 18, 2017 8:17 AM UTC

Can you share a bit more code than this?

It is not clear to me exactly where the issue is.

Translate