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