如何在HTML标记中使用compositeData

时间:2013-04-08 11:54:02

标签: xpages

我在8.5.3中有以下代码

<xp:div>
    <xp:this.attrs>
          <xp:attr name="data-theme" value="#{javascript:compositeData.data_theme}" />
          <xp:attr name="data-position" value="#{javascript:compositeData.data_position}" />
          <xp:attr name="data-role" value="footer" /> 
    </xp:this.attrs> 
</xp:div>

工作正常。但客户拥有Domino 8.5.2。此版本既不支持tagName也不支持attr。我有attr计算的值。

如何在像

这样的构造中使用compositeDate
<div data-position="#{javascript:compositeData.data-position}" ...

??

解决方法是使用计算文本

<xp:text escape="false" id="ctFooterDivStart">
    <xp:this.value><![CDATA[#{javascript:"<div data-theme='"+ compositeData.data_theme + "' data-position='" + compositeData.data_position + "' data-role='footer'>"}]]></xp:this.value>
</xp:text>

但这很丑陋而难以阅读。

3 个答案:

答案 0 :(得分:1)

到目前为止,解决方法是在源选项卡中编写data_position而不是data-position来设置shure,设计人员创建代码时没有错误。

接下来,我的页面上有一个小脚本块,用data-position

替换所有data_position
$(document).ready(function () {$('div[data_position ]').each(function(){
    $(this).attr('data-position ', $(this).attr('data_position ')); //does the switch
    $(this).removeAttr('data_position '); //clears out the old one
});});

只是一种解决方法(想法)。没有检查,如果这确实是性能方面的最佳方式。 ...

答案 1 :(得分:1)

为此使用主题怎么样?

<control>
    <name>div-data-theme</name>
    <property mode="override">
        <name>value</name>
        <value>${javascript:@Char(60) + "div data-theme='" + compositeData.data_theme + "' data-position='" + compositeData.data_position + "' data-role='footer'" + @Char(62) + @Char(60) + "/div" + @Char(62)}</value>
    </property>
    <property mode="override">
        <name>escape</name>
        <value>${javascript:false}</value>
    </property>
</control>

(@ Char是必需的,因为你不能在主题中使用括号而CDATA不起作用)

在自定义控件中,您可以通过添加 xp:text 元素来使用它:

<xp:text themeId="div-data-theme">
</xp:text>

如果您没有在 xp:text 组件中添加ID,则它不会被span标记包围。

答案 2 :(得分:0)

我现在决定使用计算文本。没有太多代码涉及。所以代码仍然可读。 以下是可折叠集(手风琴)

的示例
...
<xp:text escape="false">
    <xp:this.value><![CDATA[${javascript:var html = "<div " 
            html = html + "data-role='collapsible-set' " 
            html = html + "data-mini='" + compositeData.data_mini + "' "
            Html = html + "data-theme='" + compositeData.data_theme + "' " 
            html = html + "data-inset='" + compositeData.data_inset + "' "
            html = html + "data-iconpos='" + compositeData.data_iconpos + "' " 
            html = html + "data-content-theme='" + compositeData.data_content_theme + "' " 
            html = html + "data-collapsed-icon='" + compositeData.data_collapsed_icon + "' " 
            html = html + "data-expanded-icon='" + compositeData.data_expanded_icon + "'> " 
            return html}]]></xp:this.value>
</xp:text>
<xp:callback facetName="fctAccordion" />
<xp:text escape="false">
    <xp:this.value><![CDATA[${javascript:"</div> "}]]></xp:this.value>
</xp:text>

...