2015-09-20 55 views
0

我有多个选择元素需要包含相同的值。而不是重复相同的HTML这种类型的每一个选择:如何有效地将相同的选项值分配给Meteor中的多个Select元素?

<option value="1">1</option> 
<option value="2">2</option> 
<option value="3">3</option> 
<option value="4">4</option> 
<option value="5">5</option> 
<option value="6">6</option> 
<option value="7">7</option> 
<option value="8">8</option> 
<option value="9">9</option> 
<option value="10">10</option> 

...我想要么使用模板帮助提供这些值,比如像:

HTML:

<select class="jobLocCount" id="date1Shift1JobLoc2Count" name="date1Shift1JobLoc2Count"> 
    {{> jobLocCountVals}} 
</select> 

JS:

Template.tblScheduler.helpers({ 
    jobLocCountVals: function() { 
    return '<option value="1">1</option>'+ 
    '<option value="2">2</option>'+ 
    '<option value="3">3</option>'+ 
    '<option value="4">4</option>'+ 
    '<option value="5">5</option>'+ 
    '<option value="6">6</option>'+ 
    '<option value="7">7</option>'+ 
    '<option value="8">8</option>'+ 
    '<option value="9">9</option>'+ 
    '<option value="10">10</option>' 
    } 
}); 

...或者直接在HTML指定选项值至第一富硒这种类型的LECT,然后通过JS,类似的信息(伪)分配所有的休息:

Template.tblScheduler.onRender({ 
    $('#date1Shift1JobLoc2Count').Items = $('#date1Shift1JobLoc1Count').Items; 
    $('#date1Shift1JobLoc3Count').Items = $('#date1Shift1JobLoc1Count').Items; 
    . . . 
}); 

我的问题是,哪种方法更好,究竟会实现更好的办法(以上只是颇为牵强的伪码)?

回答

1

如果你想这样做,为什么不在模板助手中返回一个对象数组(有效的流星光标如何工作),并迭代它们?你可以对这些对象进行硬编码,但是如果你喜欢,你也可以在JS中创建一个循环来为你做。

这里有一个硬编码的例子,因为它显示你需要的选项值范围从1-10:

JavaScript的模板助手

Template.yourTemplate.helpers({ 
    values: function() { 
    return [{value: 1}, {value: 2}, {value: 3}, {value: 4}, {value: 5}, {value: 6},  
     {value: 7}, {value: 8}, {value: 9}, {value: 10}]; 
    } 
    }); 

HTML模板

<template name="yourTemplate"> 
    <select id="whateverYouWant" class="whateverYouWant"> 
     {{#each values}} 
     <option value="{{value}}">{{value}}</option> 
     {{/each}} 
    </select> 
</template> 

我选择走这条路,因为它实质上就是Meteor在你回归时所做的n Mongo查询的结果,硬编码值除外,并使用Meteor的空格条语法。

作为额外的奖励,如果你想使这个全局模板帮手,可用于任何模板,你可以这样做:

Template.registerHelper("selectValues", function() { 
     return [{value: 1}, {value: 2}, {value: 3}, {value: 4}, {value: 5}, {value: 6},  
      {value: 7}, {value: 8}, {value: 9}, {value: 10}]; 
}); 
相关问题