Javascript 在jsView中像这样使用html转换器在语法上是否错误:data link=";html{:property}";而不是数据链路=";{html:property}";?
我们在jsViews/jsRender中呈现的许多模板上使用html转换器。我们遇到了一个问题,当jsViews呈现的文本中有一个Javascript 在jsView中像这样使用html转换器在语法上是否错误:data link=";html{:property}";而不是数据链路=";{html:property}";?,javascript,html,templates,jsrender,jsviews,Javascript,Html,Templates,Jsrender,Jsviews,我们在jsViews/jsRender中呈现的许多模板上使用html转换器。我们遇到了一个问题,当jsViews呈现的文本中有一个标记时,jsViews正在摸索一个“不匹配”错误。直到最近更新到最新版本,我们才注意到这一点。她是我们最初使用的代码段,现在导致错误: <div id="Resizable" data-link="html{:Text}"></div> 现在,我注意到在jsRender APi上,它说要像下面那样处理标记,这样做时,它会正确地呈现
标记时,jsViews正在摸索一个“不匹配”错误。直到最近更新到最新版本,我们才注意到这一点。她是我们最初使用的代码段,现在导致错误:
<div id="Resizable" data-link="html{:Text}"></div>
现在,我注意到在jsRender APi上,它说要像下面那样处理标记,这样做时,它会正确地呈现数据,按照需要对html内容进行编码
<div id="Resizable" data-link="{html:Text}"></div>
我的问题是:它以前是否设置得不正确,我们只是从来没有注意到错误,在最新版本上是否发生了更改,并且后一种方法是否是使用html编码器的唯一正确方法?非常感谢您的帮助。谢谢 以下是说明数据链接元素语法的文档主题: 请特别参阅完整语法-多个目标、多个标记、多个绑定…部分,其中说明: 完整语法允许您将多个表达式分别绑定到不同的目标“attrib”,其编写方式如下:data link=“attrib1{linkExpression1}attrib2{linkExpression2}…” 请注意下面的内容: 大多数元素的默认目标是innerText,但对于输入和选择,它是value 并举例说明:
(与innerText的单向绑定-默认目标属性-,因此HTML会自动编码)
(单向绑定到innerHTML)
)。请参阅此处有关HTML转换器的文档:
如果希望作为内部HTML插入,则使用HTML目标,上面的第二个示例是:
然后可以添加编码,如
中所示
但更可能的情况是使用默认的innerText目标,而不使用显式转换器
另请参见对类似问题的回答
顺便说一句-不,这不应该改变最新版本中的行为。如果您看到行为发生了变化,是否可以在JsViews GitHub项目上添加一个问题,理想情况下使用JSFIDLE显示两个版本之间呈现不同的内容 在Boris的帮助下,通过查看文档,答案很清楚。它在语法上并不错误,但有两种不同的用法。一个用于编码数据,另一个用于将值设置为innerHTML属性
{html:property} ---> encoding
html{:property} ---> use innerHTML at target
html{html:property} ---> This fixed our problem, and was the solution we needed.
反应很好。非常感谢,我将进一步研究它,看看是否有什么变化,或者它是否在我们这边,然后仔细阅读,如果需要的话,在Github上打开一个问题。另外,感谢对html转换器文档的参考,。在浏览你的网站时,我错过了一些方法。是的,没错,这两种方法都是有效的语法,但“语义”却大不相同。(事实上几乎相反,因为一个进行编码,以防止数据作为元素插入,另一个选择innerHTML作为目标,这意味着数据可以包含作为元素插入的HTML标记。)