用把手替换Jade for ... in

时间:2017-05-02 19:33:32

标签: handlebars.js pug express-handlebars

我需要转换Jade选择列表,它会迭代状态并将状态分配给Handlebars模板。在Jade看起来像这样:

  select.form-control(name='status')
    option(value='') -- choose --
    for status in data.statuses
      option(value='#{status._id}') #{status.name}

我尝试使用#each这样做

<select name="status" class="form-control">
  <option value="">-- choose --</option>
  {{#each statuses}}
  <option value="{{this._id}}">{{this.name}}</option>
  {{/each}}
</select>

但它不起作用,因为它不是一个数组。

有没有办法用Handlebars做到这一点?谢谢。

1 个答案:

答案 0 :(得分:1)

你可以看到这个例子:

http://jsfiddle.net/bby5ynuw/

var source = $("#some-template").html(); 
var template = Handlebars.compile(source); 

var data = { 
   statuses:[
    {_id:1, name:'name1'},
    {_id:2, name:'name2'}
  ],
  statuses2:{
    o1:{_id:1, name:'name1'},
    o2:{_id:2, name:'name2'},
    o3:{_id:3, name:'name3'}
  }
}; 

$('body').append(template(data));

两种变体(数组和对象)都与您的模板一致。可能是你将把手的状态设置为错误吗?