我有模板:
{{#each action_log}}
<div>
{{Name}}
{{#if editing_score}}
<input type="text" id="set_score" parm="{{_id}}" value="" />
{{else}}
<div class="score" id="{{_id}}">{{Score}} .</div>
{{/if}}
</div>
{{/each}}
我有一个javascript代码:
Session.set('editing_score', false);
Template.today_list.editing_score = function() {
return Session.equals('editing_score', true);
};
Template.today_list.events({
'click .score': function(e, t) {
Session.set('editing_score', true);
Session.set('editing_score_id', e.target.id);
Meteor.flush();
}
});
因此,用户可以看到操作列表,想要点击其中一个并编辑一些值。但现在,如果用户单击该操作,代码将显示所有操作的文本框。
如何仅针对一个操作显示文本框?
我在会话中有操作ID:
Session.set('editing_score_id', e.target.id);
但我做不到这样的事情:
{{#if editing_score && editing_score_id == _id}}
或
{{#if editing_score(_id)}}
最好的方法是什么?
提前致谢。
答案 0 :(得分:1)
使用您的模板:
{{#if editing_score id}}
与你的助手:
Template.today_list.editing_score = function(id) {
return Session.equals('editing_score_id', id);
};
但是,我会重构一下,这样你只有一个Session变量 - 不需要两个。
此外,您的“点击.score”会传递上下文,因此您可以从this
进行身份识别 - 我发现这比您传入的事件更可靠。