2016-09-18 53 views
0

我將Meteor與autoForm/quickForm結合使用。我有收藏,讓我們稱之爲「體育」這個例子。該集合詢問用戶在本週使用下拉菜單(allowedValues in autoForm)完成的問題。現在,如果用戶選擇跑步,我想顯示'距離','區域'等。如果用戶選擇籃球,我可能想要顯示'拍攝'等。用戶下拉選擇中的流星雨收集

我應該怎麼做呢?創建多個集合或SimpleSchema的,還是有不同的首選方法?在Google上找不到任何內容,但我確信這不是一個不常見的問題。如果任何人有更多信息的鏈接已經非常感謝。


更新:

我使用所有可能的運動我剛纔定義的「每個」循環循環。你認爲爲每項不同的運動創建一個表單項目會更有意義嗎?如果是這樣,我怎樣才能確保這是在模式中正確配置?先謝謝你!

{{#autoForm collection="Sports" type="update" doc=this id="FieldValueIsForm"}} 
    {{#each sports}} 
    <h3>{{this.name}}</h3> 
    {{> afQuickField name="sports.$.sportTrue" noselect=true }} 

    {{#if afFieldValueIs name="sports.$.sportTrue" value=true}} 
     {{> afQuickField name="sports.$.sportDistance" value=this.frequency}} 
    {{/if}} 
    {{/each}} 

    <div> 
    <button type="submit">Submit</button> 
    </div> 
{{/autoForm}} 

更新2:

我的架構可以在這裏找到:http://pastebin.com/SbBSbqW2 我簡化了一點,但這是主要內容。對於不同的運動我需要不同的輸入欄。

+0

當你說, 「如果用戶選擇跑步,我想顯示'距離','區域'等,」你的意思是你想要在用戶界面中顯示這些數據,或者你想要顯示其他選項以便用戶能夠選擇/更新? – NFab

+0

@NFab很抱歉,如果那部分不清楚。我的意思是我想要額外的選項來顯示用戶能夠選擇/更新。這些在不同條件下可以是不同的類型。 – WalterB

+0

你可以添加你當前的模式嗎?瞭解如何將數據結構化並組織到數據庫中會很有幫助。 – NFab

回答

1

聽起來像你想使用afQuickField選項與條件。文件談到它here。還有一個演示代碼應該看起來像here;但是,它看起來像這樣:

{{#autoForm collection="FieldValueIs" type="insert" id="FieldValueIsForm"}} 
    {{> afQuickField name="a" options="allowed" noselect=true}} 
    {{#if afFieldValueIs name="a" value="foo"}} 
    {{> afQuickField name="b"}} 
    {{/if}} 
{{/autoForm}} 

你只需要確保您設置了「A」和「B」是你想要的選擇字段的架構中的正常設置起來。

UPDATE:

我假設你想存儲的距離,拍攝的照片等。SingleSport收藏。究竟如何保存它是你的,但它可能看起來像以下:

SingleSport = new SimpleSchema({ 
    sportType: { 
    type: String 
    }, 
    distanceRun: { 
    type: Number, 
    decimal: true, 
    optional: true 
    }, 
    shotsTaken: { 
    type: Number, 
    optional: true 
    }, 
    sportTrue: { 
    type: Boolean, 
    label: "Sport completed", 
    autoform:{ 
     type: "boolean-radios", 
     trueLabel: "Enabled", 
     falseLabel: "Disabled", 
     value: false 
    } 
    } 
}); 

然後,你可以改變你的形式的條件段像這樣:

{{#if afFieldValueIs name="sportType" value="running"}} 
    {{> afQuickField name="distanceRun"}} 
{{/if}} 
{{#if afFieldValueIs name="sportType" value="basketball"}} 
    {{> afQuickField name="shotsTaken"}} 
{{/if}} 
+0

謝謝你的回答@NFab。這部分工作。我已經更新了我的問題,以反映這給我的問題。總之,我有一個每個循環來展示所有的運動,而這隻會揭示所有運動的選項。 – WalterB

+0

@WalterB,我根據您的更新更新了我的答案。 – NFab