0

我正在运行 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 函数中。但是,每次我提交表单时,它都会在卡片模板中显示片刻,然后消失。

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

任何帮助将不胜感激。

4

1 回答 1

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
于 2012-12-03T18:44:34.680 回答