2012-12-18 6 views
7

Tôi đang cố gắng sử dụng template.find để làm cho cuộc sống của tôi dễ dàng hơn.Meteor template.find là không xác định

Nhưng trong giao diện điều khiển javascript tôi nhận được: undefined is not a function

Đây là những gì tôi có. Nó đang bị vấp ngã trên 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"}); 
    } 
    } 

Bất kỳ ý tưởng nào?

+0

thay vì tìm các yếu tố phù hợp với bộ chọn, bạn nên trực tiếp lấy giá trị văn của nguyên tố sử dụng phương thức '.getElementById()' –

+0

Xin chào user1191551, bạn đã hỏi 5 câu hỏi nhưng không chấp nhận bất kỳ câu trả lời nào cho chúng. Nó được coi là lịch sự phổ biến ở đây để chấp nhận câu trả lời bạn thấy hữu ích. Nó cũng sẽ cải thiện chất lượng câu trả lời cho các câu hỏi trong tương lai của bạn. Cảm ơn! – Rahul

+0

cảm ơn Rahul. Có vẻ như tôi có 2 tài khoản khác nhau vì tôi đã trả lời và chấp nhận nhiều câu trả lời hơn so với tài khoản này ... – Chet

Trả lời

5

sử dụng một arugment thứ hai xin như

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

và đôi khi sử dụng mẫu tự như

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

Dưới đây là như nhau trong javascript cho cà phê không biết chữ ...

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

xin lỗi, nhưng tôi hoàn toàn không hiểu cú pháp này. javascript này là gì? Tôi chưa bao giờ thấy "->" – Chet

+0

sry nó là coffeescript, u ​​có thể sử dụng điều này để dịch http://js2coffee.org/ – crapthings

15

Chức năng xử lý sự kiện nhận được hai đối số: event, một đối tượng có thông tin về sự kiện và template, một cá thể mẫu cho mẫu nơi trình xử lý được xác định.

Tham số thứ hai là tùy chọn, nhưng nó cần được nhận trong trình xử lý khi bạn muốn sử dụng các hàm mẫu mẫu như find(), findAll(), firstNode()lastNode().

Vì vậy, để sử dụng template.find() trong xử lý sự kiện của bạn, bạn cần phải vượt qua cả những lập luận như:

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

hmm. Tôi đã thử điều này: 'click input.new_device': chức năng (sự kiện, mẫu) { var id = this.find (". New_device_id"). console.log (id) } nhưng nó vẫn không hoạt động. vẫn chưa được xác định ... Và đây là html: ID: \t Chet

+3

Bạn vẫn làm sai, trong ''input.new_device'',' this' sẽ tham chiếu đến đối tượng 'window' hiện tại, * không *' template' bạn đang cố làm việc. Vì vậy, rõ ràng 'this.find()' sẽ trả về 'undefined'. Vì vậy, bạn * phải viết * 'template.find()' thay vì 'this.find()'. –