流星

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

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