流星

0

创建一个自动窗体简单的输入字段现在我有多个过滤器流星

<template name="filter1"> 
    {{> selectFilter fieldName=fieldName options=options}} 
</template> 

<template name="filter2"> 
    {{> selectFilter fieldName=fieldName options=options}} 
</template> 

<template name="filter3"> 
    {{> selectFilter fieldName=fieldName options=options}} 
</template> 

<template name="filter4"> 
    {{> selectFilter fieldName=fieldName options=options}} 
</template> 

<template name="selectFilter"> 
    <select name="{{fieldName}}" class="form-control"> 
    <option value="">Any</option> 
    {{#each options}} 
     <option value="{{value}}" selected="{{#if sessionEquals ../fieldName value}}selected{{/if}}">{{label}}</option> 
    {{/each}} 
    </select> 
</template> 

我与

Template.filter1.helpers({ 
    fieldName: 'fieldName', 
    options: getOptions 
}); 

Template.selectFilter.helpers({ 
    sessionEquals: function (key, value) { 
    return Session.equals(key, value); 
    } 
}); 

Template.selectFilter.events({ 
    'change select': function (event) { 
    var $el = $(event.currentTarget); 
    var variableName = $el.attr('name'); 
    var value = $el.val(); 

    if (isInt(value)) { 
     value = parseInt(value, 10); 
    } 

    Session.set(variableName, value); 
    }, 
}); 

随着collection2填充,我已经设置options有:

field1: { 
    type: Number, 
    optional: true, 
    autoform: { 
    options: getOptionsForField1, 
    }, 
}, 

是否可以使用autoformcollection2来创建一个简单的select元素已经填充了选项,而无需自己创建html并使用选项填充模板?

我想我可以做类似{{> quickField name=fieldName }}的东西,但我不知道如何告诉它应该从哪个模式看,以及如何对选择变化做出反应。

我只是觉得我似乎很愚蠢,既指定我的模式中的选项,也填充选项到模板。这应该自动完成。

+1

简短的回答是肯定的,我会提供一个例子不久 – challett

回答

0

你自动创建窗体:

{{#autoForm collection="Collection" id=insertCollection type="insert"}} 
    {{> afQuickField name='field1'}} 
{{/autoForm}} 

你SimpleSchema:

Collection = new Mongo.Collection('collection'); 
Collection.attachSchema(new SimpleSchema({ 
    field1: { 
     type: Number, 
     optional: true, 
     autoform: { 
      options: function() { 
       return [1,2,3,4,5,6,7,8,9]; 
      }, 
      type: "select" 
     } 
    } 
}); 
+0

你为什么要创建插入表单? – Jamgreen

+0

那么,你没有指定,所以我只是使用'插入'。 –