2016-06-01 5 views
0

セレクターID = "{{_ id}}"のMeteorテンプレートがあります。現在の教師名オブジェクトを取得し、その教師のid値をセレクタのidに代入します。そこの先生につき1つのセレクタ以上だが、これは一例です:Meteorのテンプレートで動的IDにアクセス

<template name="oneTeacher"> 
    {{#each TeacherNames}} 
    <div class="row"> 
    <div class="input-field col s2"> 
     <select id="{{_id}}"> 
     <option value="" disabled selected>Week</option> 
     <option value="Week1">Week 1</option> 
     ... 

どのように私は流星のイベントと変更機能の内部そのid値を得ることができますか?

Template.oneTeacher.events({ 
    'change #this._id': function() { // doesn't work 
    console.log('changed'); 
    } 
}); 
+0

あなたは 'id'は必要ありません。対象とする要素に 'class'を追加し、イベントハンドラで' this._id'を使用します。それはデータコンテキスト(あなたの場合は 'TeacherName')を保持します。 – MasterAM

+0

愚かな疑問をお詫びしますが、変更されたセレクタの値にはどうすればアクセスできますか? –

答えて

1

は、class属性としてセレクタとして使用することができ、あなたのフィールドに何かを与える:それは何かのようにする必要があります。

<template name="oneTeacher"> 
    {{#each TeacherNames}} 
    <div class="row"> 
    <div class="input-field col s2"> 
     <select class="week-select"> 
     <option value="" disabled selected>Week</option> 
     <option value="Week1">Week 1</option> 

それは#each句内にあるので、関連する配列要素の値にバインドされます。

Template.oneTeacher.events({ 
    'change .week-select'(e, tpl) { 
    console.log(this); 
    } 
}); 
this

の値は、それぞれTeacherNamesエントリであろう。

+0

'this'の値は教師オブジェクトを返します。 –

+0

答えに書かれているとおりに正しい。 'select'ノードが必要なら、' e.target'を使うことができます。 – MasterAM

関連する問題