有没有办法强制Meteor在Meteor中启动数组的迭代(使用{{#each}}),而不是加载新模板?例如,如果用户选择下拉选择器中的值,则启动Meteor以遍历该模板中的数组以填充另一个多选择器列表,而不是使用新的选择器列表加载整个新模板。
让我们说这是在模板中:
<script>
if ($(window).width() > 768) {
$(window).scroll(function () {
if ($(window).scrollTop() + $(window).height() > ($(document).height() - 250)) {
$("#up-btn").fadeIn(500);
} else {
$("#up-btn").fadeOut(500);
}
});
};
</script>
当用户在该模板中的其他选择器中选择一个值时:
<a id="up-btn" href="javascript:void(0);" onclick="scrolltop();"><i class="fa fa-chevron-up fa-lg"></i></a>
它会强制重复第一个#each:
.
.
.
<form class="input-field col s6 card-selector">
<select multiple">
<option value="" disabled selected>Select Students</option>
{{#each StudentList1}}
<option value= '{{FullName}}'>{{formatName FullName}} ({{Level}}) {{RoomWk1}}</option>
{{/each}}
</select>
</form>
.
.
.
除了多选择器值之外,加载一个相同的新模板会更有效。
答案 0 :(得分:1)
会话是被动的,你可以通过使用会话来实现这一点(检查你是否有会话包)。
//we don't want the session value from the previous search/events
Template.templateName.onRendered(function(){
Session.set('sessionName', undefined);
});
//I'd probably use onDestroyed instead of onRendered
Template.templateName.onDestroyed(function(){
Session.set('sessionName', undefined);
});
//template events
'change .week-selector': function(){
var selected = $('.week-selector').find(":selected").text();
Session.set('sessionName', selected)
}
//template helper
StudentList1: function(){
var session = Session.get('sessionName');
if(session !== undefined){
//return some documents using the session value in your find()
} else {
//return documents without session value
}
}
编辑:我在事件中找到了所选选项的.text(),但您可以随意返回值或使用找到的值/文本执行任何操作。