使用handlebars.js制作“if x in dict(json)”语句

时间:2016-02-14 13:02:13

标签: javascript html json django-templates 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的总菜鸟

1 个答案:

答案 0 :(得分:0)

所以问题是Handlebars会自动“标记”JSON。如果移除$.parseJSON并没有解决它,我必须指定JSON来{ {1}}。
我这样做:
jQuery