我刚刚安装了Meteor,我正在查看排行榜示例。
我试图设置随机分数,无法查看我的代码有什么问题。任何人都能看出这个有什么问题吗?我希望当点击该按钮时,所选的玩家得分会填充随机数字。
模板代码:
<template name="leaderboard">
<div class="leaderboard">
{{#each players}}
{{> player}}
{{/each}}
</div>
{{#if selected_name}}
<div class="details">
<div class="name">{{selected_name}}</div>
<input type="button" class="inc" value="Give 5 points" />
<input type="button" class="incrandom" value="Set random points" />
</div>
{{else}}
<div class="none">Click a player to select</div>
{{/if}}
</template>
JS代码:
Template.leaderboard.events({
'click input.incrandom': function () {
Players.update(session.get("selected_player"), {$incrandom: {score: Math.floor(Random.fraction()*10)*5 }});
}
});
答案 0 :(得分:1)
MongoDB中没有$incrandom
运算符,只有$inc
。
此外,此代码段中的Random
是什么?您可能打算使用Math.random()
。
另外(谢谢@apendua,我没有注意到这一点),session
应为Session
。
所以更新的代码是:
Template.leaderboard.events({
'click input.incrandom': function () {
Players.update(Session.get("selected_player"), {$inc: {score: Math.floor(Math.random()*10)*5 }});
}
});
但是,请注意,这不会将玩家的得分设置为随机值,但会增加玩家的得分随机值
要设置玩家的分数,请改用$set
运算符。