Node Moustache:如何在单独的单选按钮上获取数组的每个值?

时间:2014-11-10 06:54:37

标签: javascript node.js express mongoose mustache

环境:Node,Express,Mu2Express,mongoose

我想要做的是从mongoose获取一个数组,让模板将每个值渲染为自己的单选按钮。

找不到例子。

我现在有什么:

app.js中的路线:

app.get('/mutest',function(req, res){
  var data = [1,2,3,4];
  res.render('muTest',{
    'locals': {
      data: data }});
});

模板(muTest.mustache)

<form name="test" action="muTest" method="post">
    {{#data}}
        <input type="radio" name="choice" value={{data}}>{{data}}<br/>
    {{/data}}
    <input type="submit" value="Submit">
</form>

结果:

  • 1,2,3,4
  • 1,2,3,4
  • 1,2,3,4
  • 1,2,3,4

当然,选择任何按钮都会提交“1,2,3,4”的值。

我想要的是什么: 用于页面呈现如下:

  • 1
  • 2
  • 3
  • 4

提交单个值(例如字符串“3”)。

TIA有任何建议!

1 个答案:

答案 0 :(得分:0)

诀窍是你必须引用当前指向的项目:

在第一种情况下,您使用{{data}}作为引用数据数组的值(以及单选按钮的文本)。

在第二种情况下,您正在使用{{data [0]}},它将始终引用数组的第一个元素。

对于小胡子(符合超级规范),你必须将值(1,2,3,4)包装到一个对象中:

data = [
   {value: 1, label: 1}, 
   {value: 2, label: 2}, 
   ....
];

然后:

<form name='test' action='muTest' method='post'>
    {{#data}}
        <input type='radio' name='choice' value={{#value}}>{{#label}}</input/><br/>
    {{/data}}
    <input type='submit' value='Submit'/>
</form>

在mustache.js中,{{。}}运算符就像在javascript中使用'this'对象(或者在python中使用self等):

<form name='test' action='muTest' method='post'>
    {{#data}}
        <input type='radio' name='choice' value={{.}}>{{.}}</input/><br/>
    {{/data}}
    <input type='submit' value='Submit'/>
</form>

输出是:

<form name='test' action='muTest' method='POST'>
    <input type='radio' name='choice' value='1'>1</input><br/>
    <input type='radio' name='choice' value='2'>2</input><br/>
    <input type='radio' name='choice' value='3'>3</input><br/>
    <input type='radio' name='choice' value='4'>4</input><br/>
    <input type='submit' value='Submit'/>
</form>