0

我有模板:

{{#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)}}

最好的方法是什么?

提前致谢。

4

1 回答 1

1

使用您的模板:

{{#if editing_score id}}

与您的助手一起:

Template.today_list.editing_score = function(id) {
  return Session.equals('editing_score_id', id);
};

但是,我会稍微重构一下,以便您只有一个 Session 变量——不需要两个。

此外,您的“点击 .score”传递了上下文,因此您可以从中获取 ID——this我发现这比在您传递的事件中胡乱处理更可靠。

于 2013-04-19T11:14:37.340 回答