8

我试图用它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"});
    }
  }

有任何想法吗?

4

2 回答 2

16

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

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

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

'click input.new_device': function (event, template) {
     // your event handling code
  }
于 2012-12-19T05:11:19.633 回答
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;
  }
});
于 2012-12-18T11:56:17.897 回答