流星惹恼创造新记录

时间:2012-12-03 12:35:32

标签: mongodb coffeescript meteor

我正在使用不安全的软件包运行Meteor 0.5.2 + coffeescript包。

Cards = new Meteor.Collection "Cards"

if Meteor.isClient

    Template.makeCard.events


        # HANDLES SUBMISSION OF NEW CARD
        'submit form.makeCardForm': ->
            makeNewCard $("input.cardName").val(), $("input.percentage").val()

  # GETS ALL THE CARDS
  Template.viewCards.cards = ->
    Cards.find {}




# METHODS


makeNewCard = (cardName, percentage) ->

    # IF NO %GE GIVEN, DEFAULT TO 0
    unless percentage
        percentage = 0

    # IF CARD NAME PRESENT

    if cardName.length
        Cards.insert
            name: cardName,
            progress: percentage

我已经检查了正确的值是否正在传递到makeNewCard函数中。但是,每次我提交表单时,它会在卡片模板中显示一瞬间,然后消失。

直接通过控制台插入记录时不会发生此问题。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

我对Meteor并不熟悉,但我认为我看到了你的问题。您有一个提交处理程序:

'submit form.makeCardForm': ->
    makeNewCard $("input.cardName").val(), $("input.percentage").val()

该处理程序未返回false,因此表单提交将继续,就像正常<form>提交一样;所以你看到你想要的瞬间结果,然后<form>像往常一样提交到服务器,一切都消失了。

比较这个(http://jsfiddle.net/ambiguous/Q6cQr/):

<form>
    <input type="submit" value="submit">
</form>​

$('form').on('submit', ->
    console.log('Doing things!')
)​​

和此(http://jsfiddle.net/ambiguous/XWkXG/):

<form>
    <input type="submit" value="submit">
</form>​

$('form').on('submit', ->
    console.log('Doing things!')
    false
)​​

你应该看到差异。

您可能只需要在提交处理程序中添加return false

'submit form.makeCardForm': ->
    makeNewCard $("input.cardName").val(), $("input.percentage").val()
    false