4

我使用 Markojs 作为我的 UI 库,我需要呈现包含在从服务器检索的数据模型中的原始 HTML。

例如,假设我从服务器检索的数据模型如下所示:

data = {
    copy: "<p class='myClass'>Hello World!</p>"
}

我希望能够在我的 Marko 模板中呈现我的副本,如下所示:

.copy
    ${input.data.copy}

并让它正确呈现 HTML 元素,但它并没有按预期工作。它确实呈现到页面,但它还在页面上显示"<"前后">"作为文本。

看起来是我需要的功能,但已被弃用。这样做的正确方法是什么?

这是解决方案:

.copy -- $!{input.data.copy}
4

1 回答 1

4

Marko 默认转义文本值,但您可以使用$!{input.data.copy}(注意!)告诉 Marko 您想要原始 HTML。

https://markojs.com/docs/syntax/#dynamic-text

当您这样做时,您实际上是在关闭 Marko 的安全功能,因此请确保如果您获得的任何动态内容来自不安全的来源,它会在其他地方转义以防止代码被注入您的页。

于 2019-04-08T18:03:44.343 回答