[英]How to use a collection in a handlebars helper
我在Meteor.js上使用了带有自动成型功能的车把帮助器。 我正在尝试在表单上创建一个选择下拉框,但我希望这些选项来自集合而不是数组。 我已经使用collection2包定义了集合“人”,并使用简单模式定义了架构。 我插入了两个具有firstName,lastName,fullName值的Person。
这是我的助手:
Handlebars.registerHelper("personSelectOption", function(options) {
peeps = Persons.find().fetch();
peeps.forEach(function(persons){
return [
{label:persons.firstName , value:persons.firstName}
];
});
});
我试图使下拉框显示我在集合中拥有的每个Person的名字,并且当我向集合中添加更多Persons时,它将自动显示在下拉框中。
我知道我在这里很想念,但是我是一名新编码员,我能得到的任何帮助都会很棒。
谢谢!
我试图使用车把帮助器,因为我看到的使用自动套准的唯一好例子就是也使用了该帮助器。 自动表单中的下拉框使用以下内容:
<div class="form-group {{afHasError 'firstOptionSelect'}}">
{{afFieldLabel 'firstOptionSelect'}}
{{afFieldInput 'firstOptionSelect' firstOption="(Select Something)" options=personSelectOption}}
{{#if afFieldIsInvalid 'firstOptionSelect'}}
<span class="help-block">{{afFieldMessage 'firstOptionSelect'}}</span>
{{/if}}
</div>
这些选项是我尝试显示名字的地方。 而forEach就是要获得集合中的每个名字。 如何在不使用车把帮助器的情况下使用流星语法处理自动形成的表单?
谢谢
正如Cuberto所说,Meteor使您能够使用Meteor自己的语法向模板添加帮助程序。 还不清楚您要使用forEach
块做什么,但是这样的事情应该可以工作:
Template.myTemplate.helpers({
personSelectOption: function() {
return Persons.find().fetch();
}
});
然后,您可以使用类似以下的内容访问html中所需的信息:
<template name="myTemplate">
<select>
{{#each personSelectOption}}
<option value="{{this.firstName}}">{{this.firstName}}</option>
{{/each}}
</select>
</template>
您可以访问模板中所需的任何文档属性,而无需构建某些特殊结构并将其从帮助程序中返回。 尽管确实要这样做(例如,因为您需要以某种方式对属性进行突变),但是您应该使用map
而不是forEach
返回修改后的对象的单个数组。
这就是对我有用的东西:
车把帮手:
Handlebars.registerHelper("personSelect", function() {
peeps = Persons.find();
people = peeps.map(function(peeps) {
return {label:peeps.fullName, value:peeps.fullName };
});
return people;
});
对于自动表单模板:
<div class="form-group {{afHasError 'firstOptionSelect'}}">
{{afFieldLabel 'firstOptionSelect'}}
{{afFieldInput 'firstOptionSelect' firstOption="(Select Something)" options= personSelect }}
{{#if afFieldIsInvalid 'firstOptionSelect'}}
<span class="help-block">{{afFieldMessage 'firstOptionSelect'}}</span>
{{/if}}
</div>
我没有使用Meteor Template.helper,因为我需要该模板在自动表单模板中显示。 我没有找到执行此操作的方法,因此我决定改用handlebars.helper。 如果有人知道该怎么做,我全神贯注。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.