AngularJS partials中的区分大小写

时间:2014-02-12 17:22:12

标签: javascript html xml angularjs

我有一个包含XML的部分,我将它包含在另一部分中。

<rootNode>
    <firstName>{{ user.name }} </firstName>
    <age>{{ user.age }}</age>
</rootNode>

如果我将此作为<div ng-include="partials/test.xml"></div>的部分使用,则变量会很好,但所有标记现在都是小写的。

<rootnode>
    <firstname>Austin</firstname>
    <age>27</age>
</rootnode>

该XML不会针对期望正确案例的架构进行验证。

有没有办法告诉ng-include指令保持案例相同,或者我是否需要使用像Mustache这样的其他库来执行此类模板?

1 个答案:

答案 0 :(得分:1)

可以自定义内部转换,通过修改jqLite(或jQuery,如果可用)来强制保留大小写,通过toLowerCase方法对elements to be lowercase进行规范化。

否则,原生XMLSerializer似乎是浏览器特定的:

  

如果您的标签包含大写字母和小写字母,那么DOM处理会非常混乱。这是由于XHTML标准:XHTML区分大小写,并且由于XHTML只接受小写HTML标记和属性名称,因此执行了常规搜索和替换功能以使用小写标记替换所有大写标记。但IE通过简单地运行保护区分大小写的所有XML操作而忽略了XHTML标准的这一方面。这样更方便,因为XML标准本身就区分大小写。

     

以下是Firefox中XML处理的冲突行为:

     
      
  1. 由于XHTML兼容性,所有xhtml标记都转换为LOWERCASE

  2.   
  3. Element对象的nodeName getter在UPPERCASE

  4. 中返回   
  5. XMLDocument对象通过将所有标记转换为大写来保存dom文档

  6.   
  7. XMLSerializer.serializeToString返回大写中的所有标记名称

  8.         

    因此,编写执行服务器端和客户端XML操作的健壮代码总是很困难,这种冲突的不区分大小写的DOM处理。即将到来的版本必须通过支持区分大小写来处理此问题。

<强>参考