简体   繁体   English

使用Handlebars.js设置ID

[英]Set an id with Handlebars.js

I'm trying to put an id with handlebars like this 我正在尝试用这样的把手放置一个id

 <script id="tpl" type="text/template"> {{#each fields.field}} <div class="form-group" id="{{name}}"> <p> Something here </p> </div> {{/each}} </script> 

How I compile my template : 我如何编译模板:

 <script> var slingshot = function (url, tplId, div) { $.getJSON(url, function(data) { var template = $(tplId).html(); var stone = Handlebars.compile(template)(data); $(div).append(stone); }); } slingshot('referentiels.json', '#tpl', '.bs-callout'); </script> 

But it doesn't work. 但这是行不通的。 What is the correct syntax please ? 请问正确的语法是什么?

Thanks. 谢谢。

I got it, that was because I've done XSL use. 我明白了,那是因为我已经使用XSL。 XSL have a syntax which use {}. XSL具有使用{}的语法。 I so create a conflict between XSL and Handlebars. 因此,我在XSL和Handlebars之间造成了冲突。 Then, I just had to put my attributes {{}} into . 然后,我只需要将属性{{}}放入。

Works fine here with your data example: 在您的数据示例中可以正常工作:

 var source = document.getElementById("tpl").innerText; var template = Handlebars.compile(source); var data = { fields: { field: [{ name: 'abc' }, { name: 'bcd' }] } }; document.getElementById('result').innerText = template(data); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.6/handlebars.min.js"></script> <script id="tpl" type="text/template"> {{#each fields.field}} <div class="form-group" id="{{name}}"> <p> Something here </p> </div> {{/each}} </script> <div id="result"> </div> 

In your compilation code, this line is incorrect: 在您的编译代码中,此行不正确:

var stone = Handlebars.compile(template)(data);

If you are trying to make an IIFE , then it should be: 如果您要进行IIFE ,则应该是:

var stone = (Handlebars.compile(template))(data);

But really, I think it's much clearer to break it up into two lines: 但实际上,我认为将其分为两行更为清晰:

var compiledTemplate = Handlebars.compile(template);
var stone = compiledTemplate(data);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM