我想收集从模板中收集的变量(user _id),并使用session将其传递给另一个模板。然后我想显示这个变量。 实际上它似乎在变量的集合和传递到另一个模板,但我无法在第二个模板中显示用户的信息......
这是我的代码:
HTML
<template name="main"><!--Template 1-->
<table>
<tr>
<th>Patient</th>
</tr>
{{#each allUsers}}
<tr>
<th><label><input type="radio" class="selected" name="patient" value="{{this._id}}"><i class="fa fa-user"></i> {{this.profile.lastName}} {{this.profile.firstName}}</label></th>
</tr>
{{/each}}
</table>
{{>test}}
</template>
<template name="test"> <!--Template 2-->
<p>Name is <button class="test" name="patient" value="{{this._id}}">Test</button></p>
<div name="show">Name: {{this.profile.firstName}}</div>
</template>
JS
Template.main.events({
'click .selected': function (){
var selPat = $('input[name="patient"]:checked').val();
Session.set("selPat",selPat);
console.log("collect", selPat);
}
});
Template.test.events({
'click .test': function(){
var PAT= Meteor.users.findOne({ _id: Session.get("selPat")});
console.log("pass", PAT);
return PAT;
}
});
Template.patients.helpers({
allUsers: function() {
return Meteor.users.find({});
}
});
我想在模板2中显示模板1中所选用户的名字{{this.profile.firstName}}
答案 0 :(得分:0)
我相信这就是你在做的事情:
您无法在<div name="show">Name: {{this.profile.firstName}}</div>
中显示任何内容,因为您没有相关帮助者为该模板提供该信息。
虽然点击按钮显示患者在测试模板中的firstName听起来有点多余,但我确信你有理由这样做。
我建议你将div包装在if block
内。单击按钮时if条件呈现true,因此显示div元素。
<template name="test"> <!--Template 2-->
<p>Name is <button class="test" name="patient" value="{{this._id}}">Test</button></p>
{{#if isButtonClicked}}
<div name="show">Name: {{data.profile.firstName}}</div>
{{/if}}
</template>
您的助手和事件将如此:
Template.test.events({
'click .test': function(){
// set this session to true when the button has been clicked.
Session.set("testClicked", true);
}
});
Template.test.helpers({
isButtonClicked: function(){
// return the if block's validation.
return Session.get("testClicked");
},
data: function(){
// return the actual user data retrieved from the collection.
var PAT= Meteor.users.findOne({ _id: Session.get("selPat")});
console.log("pass", PAT);
return PAT;
});
注意:强>
当您从单选按钮列表中选择不同的患者时,您可能希望确保div不会保持打开状态。不这样做会使您在第一次单击按钮时显示div,并且在您刷新页面之前保持打开状态,即使您选择其他患者也是如此。
您可以在testClicked
- &gt;中将false
设置为undefined
或Template.main.events
。 'click .selected'