Javascript meteor中的每个模板循环多次
我正在学习如何使用meteor,当我使用每个模板时,应用程序会随机循环多次。有人知道为什么吗 JS 还有HTMLJavascript meteor中的每个模板循环多次,javascript,meteor,Javascript,Meteor,我正在学习如何使用meteor,当我使用每个模板时,应用程序会随机循环多次。有人知道为什么吗 JS 还有HTML <head> <title>LeaderBoard</title> </head> <body> <h1>Leaderboard</h1> {{>leaderboard}} </body> <template
<head>
<title>LeaderBoard</title>
</head>
<body>
<h1>Leaderboard</h1>
{{>leaderboard}}
</body>
<template name="leaderboard">
{{#each player}}
<li>{{name}}: {{score}}</li>
{{/each}}
</template>
排行榜
排行榜
{{>排行榜}
{{{#每个玩家}
{{name}}:{{score}
{{/每个}}
执行流星重置
以清除数据库并尝试以下代码:
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
guard)。每次连接新的客户机时,服务器每次启动时,都会插入一组新的播放器
在上面的代码中,我们仅在服务器启动时插入新的播放器,并且仅在数据库中没有播放器时插入新的播放器。这确保了数据库在重置后只进行一次种子设定。通过“随机次数”,您的意思是:每次重新启动/刷新列表时,列表会变长吗?我建议您将
PlayersList包装起来。在if(Meteor.isServer)
子句中插入语句。否则,在每次加载时都会插入播放器,这可能会导致您的“闪烁”,前提是仍然添加了autopublish。
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});
}
});
}