用 handlebars.js 制作 "if x in dict(json)" 语句
Making a "if x in dict(json)" statement with handlebars.js
我正在尝试将 Django 模板转换为 Handlebars.js 模板。在我使用的 django 模板中:
if forloop.counter in Dinsdag
我试图在 Handlebars.js 中制作一个自定义助手来做同样的事情。这是我目前所拥有的:
helper.js:
Handlebars.registerHelper('isIn', function(waarde, inWaarde){
$.each($.parseJSON(inWaarde), function(k, v) {
if (k == waarde){
return options.fn(this);
}
});
return options.inverse(this);
});
data.js:
$(function(){
var templateScript = $("#entry-template").html();
var theTemplate = Handlebars.compile(templateScript);
var context = { "dinsdag": {
"uitval2": {
"7": "1",
"9": "1",
"11": "1"
},}}
var html = theTemplate(context);
$('.test').html(html);
$(document.body).append(html);
})
index.html:
<html>
<head>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.5/handlebars.min.js">
</script>
<script type="text/javascript" src="
https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0-beta1/jquery.js"></script>
<script src="helper.js"></script>
<script src="data.js"></script>
</head>
<body>
<script id="entry-template" type="text/x-handlebars-template">
<ul class="test">
{{#dinsdag}}
{{#isIn 7 uitval2}}
<p>klopt</p>
{{else}}
<p>mwah</p>
{{/isIn}}
{{/dinsdag}}
</ul>
</div>
</div>
</script>
</body>
</html>
这不会在屏幕上显示任何内容,并出现以下错误:
Uncaught SyntaxError: Unexpected token o
希望有人能提供帮助。请记住,我在 Handlebars.js
完全是菜鸟
所以问题是 Handlebars "stringifies" JSON
自动。
删除 $.parseJSON
并没有解决它,我不得不指定它是 JSON
到 jQuery
.
我是这样做的:
$.each($.parseJSON(JSON.stringify(inWaarde))
我正在尝试将 Django 模板转换为 Handlebars.js 模板。在我使用的 django 模板中:
if forloop.counter in Dinsdag
我试图在 Handlebars.js 中制作一个自定义助手来做同样的事情。这是我目前所拥有的:
helper.js:
Handlebars.registerHelper('isIn', function(waarde, inWaarde){
$.each($.parseJSON(inWaarde), function(k, v) {
if (k == waarde){
return options.fn(this);
}
});
return options.inverse(this);
});
data.js:
$(function(){
var templateScript = $("#entry-template").html();
var theTemplate = Handlebars.compile(templateScript);
var context = { "dinsdag": {
"uitval2": {
"7": "1",
"9": "1",
"11": "1"
},}}
var html = theTemplate(context);
$('.test').html(html);
$(document.body).append(html);
})
index.html:
<html>
<head>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.5/handlebars.min.js">
</script>
<script type="text/javascript" src="
https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0-beta1/jquery.js"></script>
<script src="helper.js"></script>
<script src="data.js"></script>
</head>
<body>
<script id="entry-template" type="text/x-handlebars-template">
<ul class="test">
{{#dinsdag}}
{{#isIn 7 uitval2}}
<p>klopt</p>
{{else}}
<p>mwah</p>
{{/isIn}}
{{/dinsdag}}
</ul>
</div>
</div>
</script>
</body>
</html>
这不会在屏幕上显示任何内容,并出现以下错误:
Uncaught SyntaxError: Unexpected token o
希望有人能提供帮助。请记住,我在 Handlebars.js
完全是菜鸟所以问题是 Handlebars "stringifies" JSON
自动。
删除 $.parseJSON
并没有解决它,我不得不指定它是 JSON
到 jQuery
.
我是这样做的:$.each($.parseJSON(JSON.stringify(inWaarde))