不同块中的Ractive部分开始和结束标记

时间:2017-01-09 09:46:31

标签: javascript ractivejs

我们有在CKEditor中创建的RactiveJS模板,它输出此

<p>Can you see it?</p>
<p>{{# visible }}</p>
<p>Now you see me</p>
<p>{{/ visible }}</p>

这曾用于Ractive v0.4,但在最新版本中提供了解析错误。

似乎在不同的HTML块中有一个部分的开始和结束标记不再有效。

有没有解决方法,没有必须更改模板?

更新以澄清问题:

  • 这在v0.4.x中有效。是什么改变导致它不再起作用?你能指出源代码中的行吗?
  • 我可以使用哪些替代库来解析预期的胡子并具有双向绑定。

2 个答案:

答案 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库那样进行字符串插值/连接。