xPages和AngularJS - 标记属性中的命名空间前缀会导致DDE出错

时间:2012-02-24 08:30:42

标签: xpages

我想在我的xPages应用程序中使用AngularJS http://www.angularjs.org,但我发现一个奇怪的问题,即Angular正在使用的syntaxt与xPages共存。 Angular添加了特殊标记属性,这些属性是角度引擎/编译器的命令。典型地,Angular使用带有'ng'命名空间的属性。 e.g。

<div ng:app="" ng:controller="">
... content here ...
</div>

当我将这些属性放入xPages时,编辑器将其提升为错误,因为没有定义这样的'ng'命名空间。当我在xPage标签中定义这个命名空间时,DDE中没有错误,但是Domino从属性名称中删除了这个'ng'前缀,所以事情不起作用,我在浏览器中得到了这个结果:

<div app="" controller="">
... content here ...
</div>

有办法,怎么解决这个问题?

2 个答案:

答案 0 :(得分:4)

xpages源代码生成器正在删除前缀,如果你有8.5.3,你可以这样做。

<xp:panel tagName="div">
    <xp:this.attrs>
        <xp:attr name="ng:app" value="test"></xp:attr>
        <xp:attr name="ng:controller" value="test"></xp:attr>
    </xp:this.attrs>
</xp:panel>

如果你还没有使用8.5.3,你必须做这样的事情:

<xp:text escape="false">
    <xp:this.value><![CDATA[#{javascript:return "<div ng:controller='test' ng:app='test' >"; }]]></xp:this.value>
</xp:text>
    <xp:text escape="false">
    <xp:this.value><![CDATA[#{javascript:return "</div>"; }]]></xp:this.value>
</xp:text>

答案 1 :(得分:0)

来自xpage圣经:

“要使用新的ui组件,您需要扩展当前的xpages控件标记集。为此,请在xsp.config文件中指定新标记名称作为组件定义的一部分”

<faces-config>
 <faces-config-extension>
   <namespace-uri>...</namespace-uri>
   <default-prefix>...</default-prefix>
 </faces-config-extension>
</faces-config>

我从未添加过这样的库,但也许这有帮助