使用小胡子渲染HTML标记属性

问题描述 投票:9回答:2

在我的胡子模板中,我确实有类似的东西:

<div {{attr}}="{{attrVal}}"></div>

使用此渲染

Mustache.render(template, {attr : 'data-test', attrVal : 'test'})

生产

<div ="test"></div>

我希望得到类似的东西

<div data-test="test"></div>

是不是可以使用Mustache在标签内呈现属性名称?

UPDATE

我解决了这个问题。我在我的文档中的自定义<template>标记内定义了我的HTML Mustache模板。例如:

<template id='myTemplate'>
    <div {{dataAttr}}="{{dataAttrValue}}"></div>
</template>

当使用document.querySelector("#myTemplate").innerHTML获取模板时,浏览器会将{{dataAttr}}转换为{{dataattr}},因为属性不区分大小写。所以打电话

Mustache.render(
    document.querySelector("#myTemplate").innerHTML, 
    { dataAttr : 'data-attr', dataAttrValue : 'test'}
);

结果是

<div ="test"></div>
javascript html mustache
2个回答
0
投票

希望这段代码片段可以帮到你..

var template = document.querySelector("#template").innerHTML;
//Mustache.parse(template); // optional, speeds up future uses
var rendered = Mustache.render(template, {
  attr: "data-test",
  attrVal: "test"
});
document.querySelector("#target").innerHTML = rendered;
<script src="https://cdnjs.cloudflare.com/ajax/libs/mustache.js/2.2.1/mustache.js"></script>
<body>
  <div id="target">Loading...</div>
  <template id="template" >
    <textarea style="width:300px">
      <div {{attr}}="{{attrVal}}"></div>
    </textarea>
  </template>
  
</body>

0
投票

我遇到同样的问题试试单[']:

<template id='myTemplate'>
    <div {{dataAttr}}='{{dataAttrValue}}'></div>
</template>

.....

© www.soinside.com 2019 - 2024. All rights reserved.