将表单中的新元素添加到Meteor中的集合中

时间:2012-10-24 09:30:46

标签: coffeescript meteor

所以我有这个用例:

我有一个页面上的联系人列表,并希望允许用户将新的联系人添加到列表中。 为了添加联系人,有一个表格有两个输入,可以填写,并有一个按钮发送表格。

这在Meteor中非常直接。我将提交事件绑定到表单中,如下所示:

Template.contacts.events
  'submit #new_contact': (event) ->
    event.preventDefault()

    firstName = $('#first_name').val()
    lastName = $('#last_name').val()

    Contacts.insert(firstName: firstName, lastName: lastName)
    $('#new_contact input').val('') # Clear the inputs

很好,这也很简单,但我不喜欢在表单中引用特定的ID,使用JQuery获取它们然后在列表中插入新的联系人。我还认为这必须扩展得非常糟糕,如果表单有20个字段,我必须在表单中搜索20个元素,这看起来不太干净。

我想知道是否有更好的解决此问题的方法,例如将表单输入绑定到对象/集合,以便在用户在表单中引入数据时自动更新,然后仅在表单中保留它表单已提交。

1 个答案:

答案 0 :(得分:1)

此计划有自动支持(我认为),但与此同时,您可以通过使用模板对象来解决大多数异议:

Template.contact.events
  'submit form.contact': (event, template) ->
     firstName = template.find('input[name=first_name]').value

或者,在事件助手的主体中,this.currentTarget就是表单本身。