如何在Polymer3的模板中嵌入html代码(如unsafeHTML)

时间:2018-08-10 05:57:29

标签: javascript polymer polymer-elements lit-element lit-html

please check the plunker

static get template() {
   return html`
     <p>This content is from ChildClass.</p>
     <p>${super.template}</p>
     <p>Hello again from ChildClass.</p>
     <p style='color:red'>[[partHtml]] <==== this should be 'hello'</p>
     `;  
 }
 get partHtml()
 {
   return "<span>hello</span>";
 }

我希望将partHtml注入到类似于普通HTML的模板中。

我知道lit-element中不安全的HTML可以做到这一点,但是lit-element不能使用super.render()东西,它不像Polymer-element那样方便。

3 个答案:

答案 0 :(得分:1)

如何使用inner-h-t-m-l属性

static get template() {
   return html`
     <p>This content is from ChildClass.</p>
     <p>${super.template}</p>
     <p>Hello again from ChildClass.</p>
     <p style='color:red' inner-h-t-m-l="[[partHtml]]"></p>
     `;  
 }
 get partHtml()
 {
   return "<span>hello</span>";
 }

答案 1 :(得分:1)

您可以使用多行字符串

static get template() {
  return html`
   <p>This content is from ChildClass.</p>
   <p>${super.template}</p>
   <p>Hello again from ChildClass.</p>
   <p style='color:red'>${this.partHtml}</p>
 `;  
}
static get partHtml() {
  return html`<span>hello</span>`;
}

Test on Plnkr

答案 2 :(得分:0)

最后,当我调试到调用堆栈时,我找到了答案。 只需使用htmlLiteral,关键代码就是这样

import {PolymerElement, html} from 'https://unpkg.com/@polymer/polymer@3.0.5/polymer-element.js'
import {htmlLiteral} from 'https://unpkg.com/@polymer/polymer@3.0.5/lib/utils/html-tag.js'

....

  static get template() {
      return html`<p style='color:red'>${this.partHtml} <==== this should be 'hello'</p>`;  
  }
  static get partHtml()
  {
    return htmlLiteral `<span>hello</span>` ;
  }