0

安全でないパッケージをオンにしてMeteor0.5.2を実行しています+コーヒースクリプトパッケージをオンにしています。

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 に答える