我試圖創建一個模板,以便在開始時通過mongo填充下拉列表。我有第二個模板,顯示一個表格,其中包含基於上述選擇的更多細節。對於我在表格中顯示內容,我必須首先能夠檢索從下拉列表中選擇的值。我到底該怎麼做?如何從下拉菜單中檢索選定的值並將其傳遞給流星中的模板幫手
我試圖檢索它使用this.schemaName
和defaultTemplate.schemaName
,但它沒有幫助。
模板:
<template name ='defaultTemplate'>
<div class="form-group" data-required="true">
<label for="Schema" class="control-label">Select the Schema</label>
<select required="true" class="form-control">
<!-- <option default>Select Schema </option> -->
{{ #each schemaNames}}
<option >{{schemaName}}</option>
{{/each}}
</select>
<span class="help-block"></span>
</div>
{{> tableTemplate}}
</template>
<template name="tableTemplate">
<table class="table table-bordered table-condensed">
<thead>
<tr>
<td style="width: 85px">Label</td>
<td>Current Value</td>
<td style="width: 250px">New Value</td>
</tr>
</thead>
<tbody>
{{#each schemaLabels}}
<tr>
<td>{{this.label}}</td>
<td>{{this.value}}</td>
<td>
{{#autoForm id=makeUniqueID type="update" collection=Defaults doc=this autosave=true}}
{{> afFormGroup name="value" label=false}}
{{/autoForm}}
</td>
</tr>
{{/each}}
</tbody>
</table>
</template>
助手:
import { Template } from 'meteor/templating';
import '../templates/defaultTemplate.html';
Template.defaultTemplate.helpers({
schemaNames: function() {
return Defaults.find({},{schemaName:1}).map(function(c) {return {schemaName : c.schemaName};
});
},
schemaLabels: function() {
var selectedSchema = defaultTemplate.schemaName;
// alert (selectedSchema); >>>>>>>>>> Displays Undefined <<<<<<<<<<<
return Defaults.find({schemaNeme:selectedSchema},{schemaName:0,_id:0}).map(function(c) {return {label : c.label, value: c.value};
});
}
});
謝謝@CodeChimp。在仔細研究了一下之後,我最終做了一些類似於你在鏈接中提供的答案。我沒有設置true/false值,而是使用Session.set設置Session變量,然後使用Session.get在幫助器中檢索該變量。 – blueren
是的,關鍵是讀取反應值的助手。由於Session是被動的,因此它的工作方式也是一樣的。只有使用Session的catch-22是會話在模板重新加載後仍然存在(離開並返回到該頁面,並且您仍然會選擇相同的值)。這可能是可取的,但可能不會,這取決於您的使用情況。 – CodeChimp