我正在使用不安全的软件包运行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函数中。但是,每次我提交表单时,它会在卡片模板中显示一瞬间,然后消失。
直接通过控制台插入记录时不会发生此问题。
非常感谢任何帮助。
答案 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