2016-10-27 66 views
0

我有這些事件處理我的模板:有沒有辦法在Meteor中調用另一個事件處理函數的事件處理函數?

Template.addPlayerForm.events({ 
    'submit form': function(e) { 
     e.preventDefault(); 
     var playerName = e.target.playerName.value; 
     var playerScore = e.target.playerScore.value; 
     if (playerName !== "" && playerScore !== "") { 
      Meteor.call('createPlayer',playerName,playerScore); 
     e.target.playerName.value = ''; 
     e.target.playerScore.value = ''; 
    } 
}, 
    'keypress .addScore': function(e) { 
     if (e.which >= 48 && e.which <= 57) { 
     return e.charCode; 
    } 
    else if (e.which === 13 || e.keycode === 13) { 
     e.preventDefault(); 
     var playerName = e.target.playerName.value; 
     var playerScore = e.target.playerScore.value; 
     if (playerName !== "" && playerScore !== "") { 
      Meteor.call('createPlayer',playerName,playerScore); 
     e.target.playerName.value = ''; 
     e.target.playerScore.value = ''; 
    } 
} 
}) 

正如你所看到的,'submit form''keypress .addScore'都有差不多類似的功能(即增加一個新的集合到數據庫)。我的問題是,是否有一種方法可以將單個函數傳遞給兩個事件處理程序?我對Meteor很陌生,我只是在練習我看到的在線教程,希望能夠按照我的看法進行修改。謝謝您的幫助! :d

+0

我不知道流星之內,但在我的理解,是的。你能行的。聲明一個函數,而不是寫'function(){...}'只是寫''keypress .addScore':functionName' – Rajesh

回答

2

您可以創建一個函數,並調用它的事件

Template.addPlayerForm.events({ 
    'submit form': function(e) { 
     funcName(e) 
    }, 
    'keypress .addScore': function(e) { 
     if (e.which >= 48 && e.which <= 57) { 
      return e.charCode; 
     } 
     else if (e.which === 13 || e.keycode === 13) { 
      funcName(e) 
     } 
    } 
}) 


funcName = function(e){ 
    e.preventDefault(); 
    var playerName = e.target.playerName.value; 
    var playerScore = e.target.playerScore.value; 
    if (playerName !== "" && playerScore !== "") { 
     Meteor.call('createPlayer',playerName,playerScore); 
     e.target.playerName.value = ''; 
     e.target.playerScore.value = ''; 
    } 
} 
+1

我想過這樣做,但我問過,因爲在使用Meteor時可能會有不同的方式。非常感謝! :) –

相關問題