我正在尝试使用单选按钮过滤基于列表的集合,每次用户单击另一个单选按钮时,过滤后的集合应该更新。我已经获得了点击收音机的价值,但是找不到,因为我无法将变量传递给帮助者
我的客户js:
Template.NeuesEvent.events({
"click .RadioButtonOnClick": function(event){
var variable = $('input[name="VersammlungRadio"]:checked').val();
console.log(variable);
}
});
Template.friendsScroll.helpers({
friend: function(){
return Friends.find({Field: variable});
}
});
我感谢每一位帮助,谢谢你;)
答案 0 :(得分:1)
您可以根据需要使用Session将变量传递给不同的模板
Template.NeuesEvent.events({
"click .RadioButtonOnClick": function(event){
var variable = $('input[name="VersammlungRadio"]:checked').val();
Session.set("variable",variable);
}
});
Template.friendsScroll.helpers({
friend: function(){
return Friends.find({Field: Session.get("variable")});
}
});
如果未安装会话包,请使用
进行安装meteor add session
答案 1 :(得分:1)
在我看来,你应该避免使用Sessions,因为它们是在你的客户端应用程序中全局设置的。
在您的例子中,您使用两个不同的模板(NeuesEvent和friendsScroll)。是另一个模板的父模板吗?他们是兄弟姐妹吗?
如果问题是如何在 模板之间传递参数 :
// client/NeuesEvent.js
Template.NeuesEvent.helpers({
dataToFriendScroll() {
return {
text: 'blahblah',
randomBool: false,
};
},
});
// client/NeusEvent.html
<!-- beginning of the template -->
{{> friendsScroll dataToFriendScroll}}
<!-- end of the template -->
// client/friendScroll.js
Template.friendScroll.onCreated(function () {
const self = this;
// The data you want to get from the other template
self.autorun(() => {
const dataPassedInTemplate = Template.currentData();
const textFromNeusEvent = dataPassedInTemplate.text;
const randomBoolFromTheOtherTemplate = dataPassedInTemplate.randomBool;
})
})
要在相同模板的帮助和事件之间传递变量,您可以使用meteor reactive dict包:{{3} }
// client/neuesEvent.js
Template.neuesEvent.onCreated(function () {
const self = this;
self.state = new ReactiveDict();
self.state.setDefault({
radioButton: false,
});
});
Template.neuesEvent.events({
'click .RadioButtonOnClick': function (event, templateInstance) {
const result = event.target.value;
templateInstance.state.set('radioButton', result);
},
});
Template.neuesEvent.helpers({
result() {
const instance = Template.instance();
const resultButton = instance.state.get('radioButton');
return resultButton;
},
});