David Turnbull将分数字段添加到添加播放器表单但未正确排序

时间:2015-10-29 20:59:31

标签: javascript sorting meteor

如果有人完成或正在关注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
  },
  ...
});

我的猜测可能是我没有正确定义得分。任何帮助都会很棒!

1 个答案:

答案 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.
...