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

Posted

技术标签:

【中文标题】使用 handlebars.js 制作“if x in dict(json)”语句【英文标题】:Making a "if x in dict(json)" statement with handlebars.js 【发布时间】:2016-05-25 08:13:05 【问题描述】:

我正在尝试将 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】:

所以问题是 Handlebars 自动“字符串化”JSON。删除 $.parseJSON 并没有解决它,我必须指定它是 JSONjQuery。 我这样做是这样的:$.each($.parseJSON(JSON.stringify(inWaarde))

【讨论】:

以上是关于使用 handlebars.js 制作“if x in dict(json)”语句的主要内容,如果未能解决你的问题,请参考以下文章

Handlebars的使用方法文档整理(Handlebars.js)

Handlebars.js 中文文档

Handlebars.js 是不是允许动态模板?

Handlebars.js 模板引擎

Handlebars.js入门教程

使用 handlebars.js 模板以数组中的最后一项为条件