不同块中的活动部分开始和结束标记
Ractive section start and end tag in different block
我们有在 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:https://jsfiddle.net/a243vsdx/1/
- 在 v0.8 中不起作用:https://jsfiddle.net/a243vsdx/
已更新以澄清问题:
- 这在 v0.4.x 中有效。是什么改变导致它不再起作用?你能指出源代码中的哪几行吗?
- 我可以使用哪些替代库来按预期解析 mustache 并具有双向绑定。
在不更改模板的情况下,没有真正解决这个问题的方法。解析器在最近的几个版本中变得更加严格,因为像这个这样的混乱场景,这不会导致它看起来的结构。在这种情况下,您会得到一些额外的嵌套 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 中表示它,这是一个严格的树结构。
<p>Can you see it?</p>
<p>{{# visible }}</p>
<p>Now you see me</p>
<p>{{/ visible }}</p>
根本问题可能是因为您的 CKEditor 配置将输入作为富文本格式,而您的系统将其作为标记发出。内容作者的意思可能是以下内容(在所见即所得编辑器上按原样查看),这完全有道理:
Can you see it?
{{# visible }}
Now you see me
{{/ visible }}
我强烈建议首先检查您的所见即所得配置,然后让您的编辑器编辑并保存纯文本。然后重做以这种方式输入的所有数据。 从 Ractive 方面没有办法解决它,因为本质上,标记是格式错误的模板。 0.4 还不够严格,无法捕捉到这一点。
还值得注意的是,Ractive 将模板表示为树。尽管使用了类似 mustache 的模板语法,但它并没有像实际的 Mustache 库那样处理字符串 interpolation/concatenation。
我们有在 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:https://jsfiddle.net/a243vsdx/1/
- 在 v0.8 中不起作用:https://jsfiddle.net/a243vsdx/
已更新以澄清问题:
- 这在 v0.4.x 中有效。是什么改变导致它不再起作用?你能指出源代码中的哪几行吗?
- 我可以使用哪些替代库来按预期解析 mustache 并具有双向绑定。
在不更改模板的情况下,没有真正解决这个问题的方法。解析器在最近的几个版本中变得更加严格,因为像这个这样的混乱场景,这不会导致它看起来的结构。在这种情况下,您会得到一些额外的嵌套 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 中表示它,这是一个严格的树结构。
<p>Can you see it?</p>
<p>{{# visible }}</p>
<p>Now you see me</p>
<p>{{/ visible }}</p>
根本问题可能是因为您的 CKEditor 配置将输入作为富文本格式,而您的系统将其作为标记发出。内容作者的意思可能是以下内容(在所见即所得编辑器上按原样查看),这完全有道理:
Can you see it?
{{# visible }}
Now you see me
{{/ visible }}
我强烈建议首先检查您的所见即所得配置,然后让您的编辑器编辑并保存纯文本。然后重做以这种方式输入的所有数据。 从 Ractive 方面没有办法解决它,因为本质上,标记是格式错误的模板。 0.4 还不够严格,无法捕捉到这一点。
还值得注意的是,Ractive 将模板表示为树。尽管使用了类似 mustache 的模板语法,但它并没有像实际的 Mustache 库那样处理字符串 interpolation/concatenation。