2012-04-16 77 views
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文本並被點擊。

我想知道生成事件的「對象」嗎?我該怎麼做呢?

+0

根據流星文檔,它們接收'this'對象中的當前模板數據。 – 2012-04-16 05:23:02

回答

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);  
    } 
}; 
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); 
    } 
    }; 
+1

我upvoted,因爲這是真正的答案。使用會話這樣的事情是一個黑客。 – cmgriffing 2014-09-21 22:41:12

+0

不確定,「this」引用會給你幫助程序檢索到的對象的數據。我認爲這個問題更關係到如何獲取html對象。在這種情況下,「event.target」是正確的方法。不過,考慮兩種方法都很好。有時,當您想從反應數據重新渲染時使用「會話破解」。 – 2015-11-09 08:46:39

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")); 
} 
}) 
+2

只是爲了防止一些錯誤。請注意,使用event.target會爲您提供單擊的元素,因此在本例中它可能會返回鏈接上的子節點。使用event.currentTarget接收您正在偵聽的元素。 – Salketer 2016-09-21 06:52:18