如果有人完成或正在关注David Turnbull'创建您的第一个Meteor应用程序'这是一个问题。
在第102页上,它会向“添加播放器”表单添加“分数”字段,允许用户在提交给列表时为玩家定义分数。"
我想出了如何做到这一点,在我的leaderboard.js文件中使用它:
Template.addPlayerForm.events({
'submit form': function (event) {
event.preventDefault();
var playerNameVar = event.target.playerName.value;
var playerScoreVar = event.target.playerScore.value;
PlayersList.insert({
name: playerNameVar,
score: playerScoreVar
});
var playerNameVar = event.target.playerName.value = "";
var playerScoreVar = event.target.playerScore.value = "";
}
});
在我的leaderboard.html文件中:
<template name="addPlayerForm">
<form>
<input type="text" name="playerName">
<input type="number" name="playerScore">
<input type="submit" value="Add Player">
</form>
</template>
创建新玩家时,无论得分如何,玩家都会被放在列表顶部。使用此分类:
Template.leaderboard.helpers({
'player': function(){
return PlayersList.find({}, {sort: {score: -1, name: 1} });
// -1 sorts descending, while 1 will sort ascending
},
...
});
我的猜测可能是我没有正确定义得分。任何帮助都会很棒!
答案 0 :(得分:1)
输入的value
,即使是type="number"
的输入,仍然是一个字符串。
因此,如果作为字符串插入,它似乎具有最高值。
你应该解析一个int并验证它:
var playerScoreVar = parseInt(event.target.playerScore.value, 10);
// validation logic may go here or be placed in a method.
...