2

我在<template>标签中有所有模板以提高运行时性能(避免渲染),但我想知道当我需要它们的内容来编译我的 Underscore 模板时是否正确使用它们。我想要的是 DOM 元素的字符串内容,但如果不从影子 DOM 中克隆它,我似乎无法访问它。我正在这样做:

function compileTemplate(templateId){
    var el = document.getElementById(templateId);
    var templateMarkup = _.unescape(el.cloneNode(true).innerHTML);
    return compiledTemplate = _.template(templateMarkup);
}

这行得通,但是有没有更有效的方法可以避免克隆?

4

1 回答 1

1

您应该能够innerHTML直接获取字符串而无需克隆:

function compileTemplate(templateId) {
    var el = document.getElementById(templateId);
    var templateMarkup = _.unescape(el.innerHTML);
    return compiledTemplate = _.template(templateMarkup);
}

function compileTemplate(templateId) {
    var el = document.getElementById(templateId);
    console.log( el.innerHTML )
}

function test() {
    compileTemplate('T1')
}
<template id=T1>
  HTML inside
</template>

<button onclick=test()>Compile</button>

于 2017-02-09T09:00:48.557 回答