2013-06-13 15 views
9

Meteorがイベントをサポートしていることを知っていますが、私はチェックボックスでその動作を見てきましたが、次のように選択したドロップダウンで変化イベントを流星でフックできますかchange event on Meteor.js

Template.templateName.events({ 
    'change select': function(e,t){ 
     // do whatever....... 
    } 
}); 

私は流星を使ってこれを実行しようとしていると私は選択ボックスの値を変更する場合には、焼成していないようです。しかし、私がjQueryを使って物を変更すると、うまく動作します。

答えて

3

コードが正常に動作するはずです。

私はイベントには2つではなく、1つのeventMap引数しか取らないと思います。 "t"引数は何でしょうか?

+0

クリストファーK:あなたはそれをテンプレート内の任意選択ボックスの変化に発砲したい場合は

Template.chatRooms.events({ 'change #chatroomList' : function(event){ console.log("Changed") } }) 

いくつかによると、私が従っているチュートリアルのうち、tはおそらく流星の反応部分が変化したときに、いくつかのターゲット要素を表していると思う。選択コードがうまく動作していることに関して、私は何度も何度も何度も試してみましたが、変わったことはまだありません。とにかくお返事ありがとうございます。 – koramaiku

+1

OK、私は現在のターゲットを取得するためにevent.currentTargetを使用します。私はこれが正しい方法だと思っています。あるいは、クリック/変更/それ以外の要素を意味しますか?ありがとうございました! –

+3

第2パラメータは、たとえば{{#each users}} {{itemRow}} {{/ each}}を使用している場合など、テンプレート内のイベントを聴くことができるように、t.dataを通じて関連するテンプレートデータを取得するために使用できますitemRowを使用してt.dataを使用して、行に関連付けられたユーザーを取得する –

1

このようなイベントを使用すると、複数のチェックボックスを処理し、いくつかのプロパティ(多くの場合id)をチェックして、どのイベントがクリックされたかを確認できます。またはthisがクライアントの行を返すので、私はコンテキストから必要な値を取得できます。

テンプレートフラグメント

{{#each phonemeResults}} 
    <tr> 
     <td> 
     <div class="checkbox"> 
      <label> 
      <input type="checkbox" class="star"> 
      </label> 
     </div> 
     </td> 
     <td> 
      {{word}} 
     </td> 
     <td> 
     <small>{{phoneme}}</small> 
     </td> 
    </tr> 
    {{/each}} 

ハンドラ

Template.phonemeList.events({ 
    'change [type=checkbox]': function(e,t){ 
    console.log("add " this.word + " to user's public starred list"); 
    }, 
}); 
0

私は同様の問題を持っています。私のテンプレートには<option>の要素しか含まれておらず、<select>の要素がその外にあったのは<body>です。イベントマップが設定されているテンプレートに実際に<select>要素が含まれていることを確認してください。

0

あなたはそれが特定の選択ボックスの変化に発砲する場合:

Template.chatRooms.events({ 
    'change select' : function(event){ 
      console.log("Changed") 
      } 
    }) 
関連する問題