10

私は次のようなコードを持っています:

myapp.htmlで

<template name="problems">
    <div class="problems">
        {{#each problems}}
            {{> problem}}
    {{/each}}
    </div>
</template

<template name="problem">
    <div class="problem">
        <div class="problem-text" id={{_id}}>{{text}}</div>
    </div>
</template> 

myapp.jsで

Template.problem.events = {
'click .problem-text' : function () {

        var user_id = Session.get('user_id');

        // how to get problem_id of clicked item?
        Router.gotoProblem(user_id, problem_id);    
    }
};

この状況では、.problem-textに一致し、クリックされたIDを取得したいと思います。

イベントを発生させた「オブジェクト」を知りたいのですが?どうすればよいですか?

4

3 に答える 3

19

この質問に対して選択された回答は、のみを取得します。テンプレートで使用されている_id場合も同様です。_id

したがって、をより適切に使用するとevent.target、COMPLETEオブジェクトが得られます。そのため、jQueryまたはMooToolsで使用できます。

Template.top_nav.events({
'mousedown, .nav li a': function(evt){
  console.log('the class of object that was clicked is ' + $(evt.target).attr("class"));
 }
})
于 2012-09-23T19:38:24.253 に答える
6

これを試して:

Template.problem.events = {
'click .problem-text' : function () {

        var user_id = Session.get('user_id');

        // how to get problem_id of clicked item?
        Router.gotoProblem(user_id, this._id);    
    }
};
于 2012-04-16T06:34:42.827 に答える
5

のリファレンスを使用して、問題のあるオブジェクトにアクセスできます。

Template.problem.events = {
    /**
     * Handles problem text click.
     * @param {jQuery.Event} event
     */
    'click .problem-text' : function (event) {
      /*
      Here this is a reference to the problem object
      and you have jQuery.Event object as the event argument.
       */
      console.log(this, arguments);

      var user_id = Session.get('user_id');
      var problem = this;

      // how to get problem_id of clicked item?
      Router.gotoProblem(user_id, /** problem_id */problem._id);
    }
  };
于 2012-04-16T22:00:37.620 に答える