我编写了一个编译车把模板并附加到html的函数。 我在项目中使用了数千次车把模板,一切顺利。 我不得不提到它将在localhost中正确呈现,但是在服务器中它将返回CDATA。 但是在这种情况下,把手的输出是这样的,并且会引起很多问题。下面是template.php文件中的模板html
<script id="w-l-template" type="text/x-handlebars-template">
<div data-name="name{{ID}}"></div>
.....
</script>
这是一个名为my.js
的js文件中的函数
var num = 2;
function add_name(){
var out = $('#w-l-template').html();
var template = Handlebars.compile(out);
var data={
ID:num
}
var res=template(data);
$('[data-main-content="main"]').append(res);
num = num+1;
}
$(document).on('click', '#add', function(){
add_name();
});
但是在通过把手渲染之后,我将在第一行获得CDATA,就像这样
<!--[CDATA[*/<div class="col-lg-12 "data-name="2"-->
答案 0 :(得分:0)
我知道这个答案有点晚了,但是今天我遇到了类似的问题。我发现Handlebars并没有将CDATA添加到我的HTML中,实际上是Drupal。有时我们使用Drupal的内联编辑器创建页面,因此我将通过Full HTML编辑器添加HTML。
不幸的是,如果您未在Drupal中配置HTML编辑器以不重写损坏的HTML,它认为Handlebar脚本语法已损坏,则Drupal将尝试修复标签并添加CDATA,这会使您的标签被注释掉。然后,把手将尝试为该新的注释标签建立模板,并输出注释掉的标签。令人沮丧!但是希望我的回答对您有所帮助(或者如果将来再次遇到这种情况)。
基本上是TL:DR,它不是Handlebars,可能是您的PHP(或使用PHP的CMS)中的某些设置可能试图“修复” Handlebars模板,因为它认为HTML已损坏。