【问题标题】:Meteor Troubling Creating new Record流星麻烦创造新纪录
【发布时间】:2012-11-20 22:15:38
【问题描述】:

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

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

任何帮助将不胜感激。

【问题讨论】:

    标签: mongodb coffeescript meteor


    【解决方案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
    

    【讨论】:

    • 太棒了!不敢相信我错过了这个!
    猜你喜欢
    • 1970-01-01
    • 2014-03-08
    • 2012-03-11
    • 2012-03-11
    • 2015-09-17
    • 1970-01-01
    • 2020-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多