Odoo自定义XML报表模板中JS代码如何使用>=与<=运算符?
解决Odoo XML报表模板中JS运算符的XML解析问题
在Odoo的XML格式HTML报表模板里写JavaScript时,直接使用>=、<=这类运算符会触发XML解析问题,但用&gte;、&lte;又会报错——原因是XML没有预定义gte/lte实体。这里给你两种可行的解决方法:
方法一:用CDATA包裹JavaScript代码
XML的CDATA区块会被解析器忽略,里面的特殊字符不需要转义,写法最省心:
<script type="text/javascript"> <![CDATA[ for (let k in datas) { let _d = datas[k]; if (_d.status >= 5) is_ok_arr.push(_d); else if (_d.status <= 2) is_pending_arr.push(_d); else not_ok_arr.push(_d); } ]]> </script>
方法二:正确转义单个特殊字符
XML只预定义了5个实体:<(对应<)、>(对应>)、&(对应&)、"(对应")、'(对应')。你之前错误地用了&gte;,正确的转义应该是把>转成>,<转成<,所以>=写成>=,<=写成<=:
<script type="text/javascript"> for (let k in datas) { let _d = datas[k]; if (_d.status >= 5) is_ok_arr.push(_d); else if (_d.status <= 2) is_pending_arr.push(_d); else not_ok_arr.push(_d); } </script>
推荐用第一种方法,代码可读性更高,不用逐个处理转义字符。
内容的提问来源于stack exchange,提问作者hakb
相关产品推荐
相关产品推荐

