我知道我的问题有点愚蠢,但我被卡住了。 我有一份合同表,每行都有一个更新按钮; 当我点击该按钮时,会显示包含合同编辑表单的modalthat。 一切正常,但我的问题是模态显示每行的相同合同。 有关详细说明,则为屏幕截图
这是我的模板助手
Template.ContractsList.helpers({
lists: function() {
Meteor.subscribe('listsMethod');
return Contracts.find({});
},
list: function() {
return Contracts.findOne();
}
});
这是我的模板事件
Template.ContractsList.events({
'click #editContract'(event) {
$("#showModal").modal("show");
console.log( Contracts.findOne({_id: this._id}) );
},
'click #hideModal'(event) {
$("#showModal").modal("hide");
},
});
这是我的模板
<template name="ContractsList">
<div class="modal fade" id="showModal">
<div class="modal-dialog modal-sm">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">edit</h4>
</div>
<div class="modal-body">
<div class="card-body">
{{#with list}}
<div class="form-group">
<label class="select">Name</label>
<input type="text" class="form-control" aria-describedby="emailHelp" value={{name}} />
</div>
<div class="form-group">
<label >Package</label>
<div >
<select id="role" name="select" class="form-control" >
<option value="package" selected disabled hidden >{{package}}</option>
<option value="freemium">freemium</option>
<option value="bronze">bronze</option>
<option value="silver">silver</option>
<option value="gold">gold</option>
<option value="platium">platium</option>
</select>
</div>
</div>
{{/with}}
</div>
</div>
<div class="modal-footer">
<Button class="primary" >Create contact</Button>
<Button class="secondary" id="hideModal">Cancel</Button>
</div>
</div>
</div>
</div>
<div class="breadcrumb">
<div class="table-responsive">
<table class="table">
<thead>
<tr>
<th>Name</th>
<th>Package Type</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
{{#each lists}}
<tr>
<td>
{{name}}
</td>
<td>
{{package}}
</td>
<td>
<Button class="btn btn-outline-primary" id="editContract"><img src="../../../../../img/icons/addcontact-icon.png" /></Button>
</td>
</tr>
{{/each}}
</tbody>
</table>
</div>
</div>
</template>
在模板事件的控制台日志中,我正确地获取了数据
{_ id:“Qu8pTSzLDLGKRNRzd”,名称:“ilyes”,包:“bronze”} {_id: “w7NDzerxivAjhK3dy”,名称:“ee”,包装:“freemium”}
我该怎么办?
答案 0 :(得分:3)
在您的点击处理程序中设置Session
变量(或reactiveVar
),然后在list
帮助程序中使用它:
事件处理程序:
'click #editContract'(event) {
$("#showModal").modal("show");
console.log( Contracts.findOne({_id: this._id}) );
Session.set('currentRecordId',this._id);
},
助手:
list() {
return Contracts.findOne(Session.get('currentRecordId');
}