我将Markojs用作UI库,并且需要呈现从服务器检索到的数据模型中包含的原始HTML。
例如,假设我从服务器检索的数据模型如下所示:
data = {
copy: "<p class='myClass'>Hello World!</p>"
}
我希望能够使用以下内容在我的Marko模板中呈现我的副本:
.copy
${input.data.copy}
并使其正确呈现HTML元素,但效果并不理想。它确实会呈现到页面上,但在页面上也将"<"
和">"
作为文本显示在页面上。
this似乎是我需要的功能,但已弃用。正确的方法是什么?
这是解决方案:
.copy -- $!{input.data.copy}
答案 0 :(得分:2)
默认情况下,Marko会转义文本值,但是您可以使用$!{input.data.copy}
(请注意!
)来告诉Marko您想要原始HTML。
https://markojs.com/docs/syntax/#dynamic-text
执行此操作时,实际上是在关闭Marko的安全性功能,因此请确保,如果要获取的任何动态内容来自不安全的来源,则该内容将被转义到其他地方以防止代码被注入您的页面。