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();
    }
});

したがって、ユーザーはアクションのリストを表示し、そのうちの 1 つをクリックして値を編集することができます。しかし、ユーザーがアクションをクリックすると、コードはすべてのアクションのテキストボックスを表示します。

1 つのアクションに対してのみテキスト ボックスを表示するにはどうすればよいですか?

セッションにアクション 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 変数が 1 つだけになるように少しリファクタリングします。2 つは必要ありません。

また、「click .score」はコンテキストを渡すため、ID を取得できますthis。これは、渡すイベントをいじるよりも信頼性が高いと思います。

于 2013-04-19T11:14:37.340 に答える