我正在学习如何使用 meteor ,当我使用每个模板时,应用程序会随机循环多次。有谁知道为什么吗?
JS
PlayersList = new Mongo.Collection('players');
PlayersList.insert({name: "David" , score:0});
PlayersList.insert({name: "Bob", score: 0});;
PlayersList.insert({name: "Wesley", score: -1000});
if(Meteor.isClient){
Template.leaderboard.helpers({
player: function(){
return PlayersList.find();
}
});
}
和 HTML
<head>
<title>LeaderBoard</title>
</head>
<body>
<h1>Leaderboard</h1>
{{>leaderboard}}
</body>
<template name="leaderboard">
{{#each player}}
<li>{{name}}: {{score}}</li>
{{/each}}
</template>
最佳答案
做一个meteor reset
来清除你的数据库并试试这个代码:
PlayersList = new Mongo.Collection('players');
if (Meteor.isClient) {
Template.leaderboard.helpers({
player: function() {
return PlayersList.find();
}
});
}
if (Meteor.isServer) {
Meteor.startup(function() {
// if there are no players in the database
if (PlayersList.find().count() === 0) {
PlayersList.insert({name: "David", score: 0});
PlayersList.insert({name: "Bob", score: 0});
PlayersList.insert({name: "Wesley", score: -1000});
}
});
}
在原始代码中,播放器是从客户端和服务器端插入的(没有Meteor.isServer
守卫)。每次有新的客户端连接,每次服务器启动时,都会插入一组新的播放器。
在上面的代码中,我们只在服务器启动时插入新玩家并且只有当数据库中没有玩家时。这可确保数据库在重置后仅播种一次。
关于javascript - meteor 中的每个模板循环多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32831430/