2012-12-18 6 views
7

Hayatımı kolaylaştırmak için template.find kullanmayı deniyorum. Meteor şablon.find undefined

Ama javascript konsolda alıyorum: undefined is not a function

İşte ben budur. Bu 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"}); 
    } 
    } 

Herhangi bir fikir üzerinde takıldı oluyor?

+0

, doğrudan elemanın değer metni almak gerekir '.getElementById()' yöntemini kullanarak –

+0

Merhaba user1191551, 5 soru sormuştunuz ancak yanıtları kabul etmediniz. Burada faydalı bulduğunuz cevapları kabul etmek için ortak nezaket olarak kabul edilir. Gelecekte vereceğiniz sorulara verilen cevapların kalitesini de artıracaktır. Teşekkürler! – Rahul

+0

teşekkürler Rahul. Görünüşe göre, 2 farklı hesap var gibi görünüyor çünkü bu hesabın gösterdiğinden daha fazla cevap aldım ve kabul ettim ... – Chet

cevap

5

... ikinci 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 

gibi lütfen kullanmak ve bazen Burada okuma yazma bilmeyen kahve için javascript aynı şey

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

gibi şablon kendisini kullanmak

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

Template.superuserHUD.events({ 
    event: function(event, template) { 
    return this.find('.new_device_id').value; 
    } 
}); 
+0

Üzgünüm, ama bu sözdizimini tam olarak anlamıyorum. bu javascript nedir? Daha önce hiç görmedim "->" – Chet

+0

sille coffeescript, bunu http://js2coffee.org/ – crapthings

15

Olay işleyici işlevi, iki bağımsız değişken alır: event, olay hakkında bilgi içeren bir nesne ve işleyicinin tanımlandığı şablon için bir şablon örneği olan template.

İkinci parametre isteğe bağlıdır, ancak find(), findAll(), firstNode() ve lastNode() gibi şablon örneği işlevlerini kullanmak istediğinizde o işleyicisi alınan gerekmektedir.

Yani, her iki argüman geçmeleri gerekiyor olay işleyicinizde template.find() kullanmak: Bunun yerine seçici ile eşleşir elemanı bulma

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

hmm çevirisinde kullanabilirsiniz. Bunu denedim: 'click input.new_device': işlev (olay, şablon) { var id = this.find (". New_device_id"). console.log (id) } ancak yine de çalışmadı. hala tanımsız ... Ve bu html: ID: \t Chet

+3

Yine de yanlış yapıyorsunuz, '' click gird.new_device '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ı ı ı ı ı ı ı ı ı ı ı ı ı ı ı ı ı ı ı çalmaya çalışmakta olan '' '' '' '' '' '' '' geçerli 'window' nesnesine atıfta bulunacaktır. Yani, açıkça 'this.find() '' undefined'i döndürecektir. Yani, *, this.find() 'yerine *' template.find() 'yazmalısınız. –