2012-12-18 5 views
7

template.findを使用して私の人生を楽にしています。Meteor template.findは定義されていません

しかし、私が得るJavaScriptコンソールで:undefined is not a function

は、ここで私が持っているものです。それは上に上がっているtemplate.find(...)

Template.superuserHUD.events = 
    { 
    'click input.new_device': function (template) { 
     var id = template.find(".new_device_id").value; 
     Device_IPs.insert({ID: id, IP: "Not Connected"}); 
    } 
    } 

すべてのアイデア?

+0

の代わりに、セレクタに一致する要素を見つけ、あなたは直接要素の値がテキストを取得する必要があります'.getElementById()'メソッドを使用しています –

+0

こんにちはuser1191551、あなたは5つの質問をしましたが、回答は受け付けていません。ここでは、役に立つと思われる回答を受け入れることが一般的な礼儀であると考えられています。また、あなたの将来の質問に与えられる回答の質も向上します。ありがとう! – Rahul

+0

Rahulに感謝します。私は間違いなく答えて、このアカウントよりも多くの答えを受け入れたので、私は2つの異なるアカウントを持っているようだ... – Chet

答えて

5

状の第2 arugmentをしてください使用

Template.superuserHUD.events 
    'click input.new_device': (event, template) -> 
     options = 
       id: template.find('.new_device_id').value 
       IP: 'Not Connected' 
     Device_IPs.insert options 

、時には

Template.superuserHUD.events 
    event: (event, template) -> 
     @find('.new_device_id').value 

のようなテンプレート自体を使用ここで

Template.superuserHUD.events({ 
    'click input.new_device': function(event, template) { 
    var options; 
    options = { 
     id: template.find('.new_device_id').value, 
     IP: 'Not Connected' 
    }; 
    return Device_IPs.insert(options); 
    } 
}); 

...文盲コーヒーのためにJavaScriptで同じです
Template.superuserHUD.events({ 
    event: function(event, template) { 
    return this.find('.new_device_id').value; 
    } 
}); 
+0

申し訳ありませんが、私は完全にこの構文を理解していません。これはjavascriptですか?私は見たことがない " - >" – Chet

+0

それはあなたのcoffeescriptを叫んで、私は翻訳するためにこれを使用することができますhttp://js2coffee.org/ – crapthings

15

イベントハンドラ関数は、event、イベントに関する情報を持つオブジェクト、およびハンドラが定義されているテンプレートのテンプレートインスタンスtemplateの2つの引数を受け取ります。

2番目のパラメータはオプションですが、それはあなたがfind()findAll()firstNode()lastNode()のようなテンプレートインスタンス関数を使用したい場合、ハンドラで受信する必要があります。

だから、あなたのイベントハンドラでtemplate.find()を使用するために、あなたのように引数の両方に合格する必要があります。

'click input.new_device': function (event, template) { 
    // your event handling code 
    } 
+0

hmm。私はこれを試しました: 'click input.new_device':function(イベント、テンプレート){ var id = this.find( "。new_device_id")。 console.log(id) } まだそれでも動作しませんでした。まだ定義されていません... これはhtml:ID: \t Chet

+3

あなたは '' click input.new_device ''の中で '' this''が現在の '' window'オブジェクトを参照し、あなたが作業しようとしている '' template''を参照しません。だから、明らかに 'this.find()'は 'undefined'を返します。だから、* this.find()の代わりに* template.find()を書く必要があります。 –

関連する問題