我是Meteor的新人。我有选择框,我想从mongo集合本身填充。我尝试这样做如下,但没有工作
<template name="clist">
<div class="input-field">
<select>
<option value="" disabled selected>Choose your option</option>
{{#each company}}
<option>{{ccategory}}</option>
{{/each}}
</select>
</div>
<ul class="collection" id="listings">
{{#each company}}
<li>
{{> employees}}
</li>
{{/each}}
</template>
我还希望根据下拉列表中选择的值过滤mytemplate中的数据。请帮助我,我坚持这个。
这正是我现在所拥有的,但问题是下拉列表是根据不直接来自架构的所有列表的结果填充的,并且是所有值的重复。我正在为这两个值使用相同的返回帮助器,如return company.find()。请帮帮我
答案 0 :(得分:2)
为了填充选择,您应该将{{#each}}向下更改为选择,就像这样。
<select>
<option disabled selected>Choose option</option>
{{#each company}}
<option>{{category}}</option>
{{/each}}
</select>
因为如果您将{{#each}}
放在<select>
标记的顶部,那么meteor将为每家公司创建1个选择。
公司助手应该像简单的return company.find();
现在,如果你想要过滤,有很多选择可以做到这一点,其中一个可能是这个。
我喜欢使用ReactiveDict();,所以我会在这个例子中使用。
安装meteor add reactive-dict
Template.example.onCreated(function(){
var self = this;
self.example = new ReactiveDict();
self.example.setDefault( 'valueToFilter' , null);
});
现在处理change
等事件,请执行以下操作。
Template.example.events({
'change select' : function( event, template ) {
var instance = Template.instance();
instance.example.set( 'valueToFilter' event.target.value ); //or use $('select').val() whatever you like to take the value;
}
})
现在显示结果。
Template.example.helpers({
showSelectedValues : function(){
var instance = Template.instance();
return Companies.find( { name : instance.example.get( 'valueToFilter' )} );
}
})
这应该给你一个大局,祝你好运!