Meteor template.find未定义

时间:2012-12-18 10:42:39

标签: javascript events templates 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"});
    }
  }

有什么想法吗?

2 个答案:

答案 0 :(得分:15)

事件处理程序函数接收两个参数:event,一个包含事件信息的对象,以及template,一个模板实例,用于定义处理程序的模板。

第二个参数是可选的,但是当您想要使用find()findAll()firstNode()lastNode()等模板实例函数时,需要在处理程序中接收它。

因此,要在事件处理程序中使用template.find(),您需要将两个参数都传递为:

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

答案 1 :(得分:5)

请使用第二个参数

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

这对于咖啡文盲的javascript也一样......

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