【问题标题】:Extra div getting added in sightly html markup in if-else condition在 if-else 条件下,额外的 div 被添加到明显的 html 标记中
【发布时间】:2017-05-01 08:55:15
【问题描述】:

如果是 html 标记,则会添加一个额外的 div;当第二个块没有执行时。作者对话框中基于复选框的三个条件。当第二个复选框没有被选中时;那么第一个和第三个条件为真,第二个条件为假;所以第二个视觉块不应该被执行。但它在标记中添加了一个额外的 div ;这样具有“容器选项卡容器”类的 div 就会在两者之间关闭。

--请在视觉标记下方找到

<sly data-sly-test.condition1="${properties.checkbox1}">
<sly data-sly-test.condition2="${properties.checkbox2}">
<sly data-sly-test.condition3="${properties.checkbox3}">

<div class="tabs-body">
            <div class="container tabs-container">

                <!--/* First condition */-->
                <sly data-sly-test="${condition1}">
                    <div class="tabs-body-item" data-tab-content-id="data-tab-content-id1">

                    </div>
                </sly>                

                <!--/* Second condition */-->
                <sly data-sly-test="${condition2}">
                    <sly data-sly-test="${condition1}">
                    <div class="tabs-body-item" data-tab-content-id="data-tab-content-id2">
                    </sly>
                    <sly data-sly-test="${!condition1}">
                    <div class="tabs-body-item is-active" data-tab-content-id="data-tab-content-id2">
                    </sly>
                    </div>
                </sly>

                <!--/* Third condition */-->
                <sly data-sly-test="${condition3}">
                    <sly data-sly-test.condition2andcondition1false="${!condition2 && !condition1}">
                        <div class="tabs-body-item is-active" data-tab-content-id="data-tab-content-id3">
                    </sly>
                    <sly data-sly-test="${!condition2andcondition1false}">
                        <div class="tabs-body-item" data-tab-content-id="data-tab-content-id3">
                    </sly>
                    </div>
                </sly>


            </div> 
        </div>

呈现的标记是--

<div class="tabs-body">
            <div class="container tabs-container">


                    <div class="tabs-body-item" data-tab-content-id="data-tab-content-id1">

                    </div>


                </div><!--extra div-->





                        <div class="tabs-body-item" data-tab-content-id="data-tab-content-id3">

                    </div>


            </div> 
        </div>

评论中提到了额外的 div。我花了很多时间,但无法弄清楚额外的 div 是从哪里添加的。请各位有眼光的专家帮我解决这个问题?

欣赏它。

【问题讨论】:

    标签: html aem templating sightly


    【解决方案1】:

    这很可能是由于标签的无效嵌套。不要尝试将 JSTL 代码原样转换为 HTL。

    <div class="tabs-body">
        <div class="container tabs-container">
    
            <!--/* First condition */-->
            <div class="tabs-body-item" data-tab-content-id="data-tab-content-id1" 
                data-sly-test.condition1="${properties.checkbox1}">
    
            </div>
    
            <!--/* Second condition */-->
            <div class="tabs-body-item ${ condition1 ? '' : 'is-active' }" 
                data-tab-content-id="data-tab-content-id2" 
                data-sly-test.condition2="${properties.checkbox2}">
    
            </div>
    
            <!--/* Third condition */-->
            <div class="tabs-body-item ${condition1 && condition2 ? 'is-active' : ''}" 
                data-tab-content-id="data-tab-content-id3" 
                data-sly-test="${properties.checkbox3}">
    
            </div>
    
        </div> 
    </div>
    

    【讨论】:

    • 好一个@rakhi4110,这行得通;然而;仍然不明白额外的 div 是如何添加的。视觉本身是否添加了额外的 div?
    • 不。 Sightly 不会添加额外的 div。但是,当标签没有正确嵌套时,data-sly-test 条件不会按预期应用到整个部分。在您的情况下,当您的 condition2 为 false 时,它​​必须跳过整个第二部分,但是由于标签嵌套不当,&lt;/div&gt; 被排除在该部分之外。
    猜你喜欢
    • 2014-05-19
    • 2013-09-07
    • 2012-12-18
    • 1970-01-01
    • 1970-01-01
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    • 2018-07-21
    相关资源
    最近更新 更多