我们有在CKEditor中创建的RactiveJS模板,它输出此
<p>Can you see it?</p>
<p>{{# visible }}</p>
<p>Now you see me</p>
<p>{{/ visible }}</p>
这曾用于Ractive v0.4,但在最新版本中提供了解析错误。
似乎在不同的HTML块中有一个部分的开始和结束标记不再有效。
有没有解决方法,没有必须更改模板?
更新以澄清问题:
答案 0 :(得分:3)
如果不改变模板,就没有办法解决这个问题。由于像这样的混乱场景,解析器在最后几个版本中变得更加严格,这不会产生它看起来的结构。在这种情况下,你得到一些额外的嵌套p标签,这不是特别有害,但在其他情况下它是。所以你在0.4中实际拥有的是:
<p>Can you see it?</p>
<p>
{{# visible }}
<p></p>
<p>Now you see me</p>
<p></p>
{{/ visible }}
</p>
Ractive 0.8(我认为0.5+,但绝对是0.7+)一直沿着块打开后的</p>
开始,在那里它看到一个未打开的元素的结束标记并抛出一个错误。 Ractive从未支持跨越标记的块,因为无法在VDOM中表示这一点,这是一种严格的树结构。
答案 1 :(得分:1)
<p>Can you see it?</p>
<p>{{# visible }}</p>
<p>Now you see me</p>
<p>{{/ visible }}</p>
根本问题可能是因为您的CKEditor配置将输入作为富文本并且您的系统将其作为标记发出。内容的作者可能意味着以下内容(在WYSIWYG编辑器中看到),这是完全合理的:
Can you see it?
{{# visible }}
Now you see me
{{/ visible }}
我强烈建议您首先检查您的WYSIWYG配置,让编辑人员编辑并保存纯文本。然后重做以这种方式输入的任何数据。 从Ractive方面无法绕过它,因为从本质上讲,标记是一个格式错误的模板。 0.4只是不够严格来抓住这个。
值得注意的是,Ractive将模板表示为树。尽管使用了类似胡子的模板语法,但它并没有像实际的Mustache库那样进行字符串插值/连接。