javascript - lit-html:连接字符串以使用 html``

标签 javascript web-component lit-element lit-html

我正在使用 lit-element 编写一个 Web 组件,我想知道如何在变量内部渲染一个字符串,该变量仍然具有完整的 @click 监听器,并且使用 html“处理器”而不是纯字符串。

someFunction() {
    var someString=`<button @click="alert('hi')">blah</button>`;
    return html([someString]);
}
render() {
    return this.someFunction();
}

不起作用,而

someFunction() {
    return html`<button @click="alert('hi')">blah</button>`
}
render() {
    return this.someFunction();
}

有效。

感谢您的帮助!

最佳答案

这是不可能的。这是两个标记模板文字和函数调用根本不同的东西:

标记模板文字

html`<button @click="alert('hi')">blah</button>`

调用 html 作为标记模板函数将调用带有 n 个参数的 html 函数。第一个是模板常量部分的数组,第二个以后的参数将被插值。

普通函数调用

const someString = `<button @click="alert('hi')">blah</button>`;
html([someString]);

html 作为函数调用 html([someString]) 将调用该函数,并将数组作为其第一个参数。

作为一种语言功能,浏览器需要从普通函数中理解标记模板。它发生在词汇/语法级别,因此标记函数必须且必须后跟反引号(`)字符。

总之,标记函数 html 不能在没有反引号的情况下存在。您可以在 MDN docs 上阅读更多信息.

关于javascript - lit-html:连接字符串以使用 html``,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56395936/

相关文章:

javascript - 如何找出元素是否在隐藏的 iframe 中

javascript - 用于 Visual Studio 2010 问题的 JS Lint

javascript - shadowdomv1 在 firefox 上的兼容性

javascript - 如何创建已附加影子根的自定义元素

javascript - 将 unsafeHTML 与 lit-element 一起使用时出错

javascript - SCSS 外部链接到 LitElement 中的样式组件

javascript - Web 组件如何相互通信(Lit 框架)?

javascript - 在 ajax 加载的页面上执行 JQuery 操作

javascript - CSS 更改后拖放脚本开始崩溃

dart - Dart WebComponent上不允许使用绝对路径