Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Meteor新手,为什么该模板不显示所选名称?_Javascript_Meteor - Fatal编程技术网

Javascript Meteor新手,为什么该模板不显示所选名称?

Javascript Meteor新手,为什么该模板不显示所选名称?,javascript,meteor,Javascript,Meteor,我正在开发一个教程应用程序,在底部的模板中,h3标签应显示页面上所选人员的姓名。这应该通过showSelectedPlayer助手完成。但是,该名称在运行时不会出现在站点上。有人知道这是为什么吗?我试过查找和查找并重新编写所有内容 编辑1: 我将showSelectedPlayer呼叫放置在助手处,但它仍然不起作用 HTML showSelectedPlayer方法中的PlayersList.find(selectedPlayer)应该是PlayersList.findOne(selectedP

我正在开发一个教程应用程序,在底部的模板中,h3标签应显示页面上所选人员的姓名。这应该通过showSelectedPlayer助手完成。但是,该名称在运行时不会出现在站点上。有人知道这是为什么吗?我试过查找和查找并重新编写所有内容

编辑1: 我将showSelectedPlayer呼叫放置在助手处,但它仍然不起作用

HTML

showSelectedPlayer
方法中的
PlayersList.find(selectedPlayer)
应该是
PlayersList.findOne(selectedPlayer)
,因为find()返回一个数组,并且它没有名为
name
的属性

此外,您还可以使用Chrome developer工具进行调试,方法如下:

var selectedPlayer = Session.get('selectedPlayer');
console.log(selectedPlayer);
console.log(PlayersList.find(selectedPlayer));
return PlayersList.find(selectedPlayer);
因此,您可以验证在更新会话值时是否实际响应地调用了helper方法,并且返回值与您期望的值相同。如果没有,代码中还有一些其他问题

    PlayersList = new Mongo.Collection('players');
if(Meteor.isClient) {
    Template.leaderboard.helpers({
        player: function(){
        return PlayersList.find({}, {sort: {score: -1, name: 1}} ); //sorting comes from mongodB
        },
        'selectedClass': function(){
        var playerId = this._id;
        var selectedPlayer = Session.get('selectedPlayer');
        if(playerId == selectedPlayer){
            return "selected"
        }
        },
        showSelectedPlayer : function(){
        var selectedPlayer = Session.get('selectedPlayer');
        return PlayersList.find(selectedPlayer);
        }
        });
    Template.leaderboard.events({
        'click .player' : function(){
            var playerId = this._id;
            Session.set('selectedPlayer', playerId);
            var selectedPlayer =  Session.get('selectedPlayer');
            console.log("Wesley Sucks");
            console.log(selectedPlayer);
        },
        'click .increment' :function(){
            console.log("button Clicked");
            var selectedPlayer = Session.get('selectedPlayer');
            PlayersList.update(selectedPlayer,{$inc:  {score:5}});
        },
        'click .decrement' :function(){
            console.log("dec button clicked");
            var selectedPlayer = Session.get('selectedPlayer');
            PlayersList.update(selectedPlayer, {$inc: {score:-5}});
            },
        'showSelectedPlayer': function(){
            var selectedPlayer = Session.get('selectedPlayer');
            return PlayersList.find(selectedPlayer);
        }
        });
}

if (Meteor.isServer){
    Meteor.startup(function() {

            if(PlayersList.find().count() === 0){
            PlayersList.insert({name: "Davis" , score: 0});
            PlayersList.insert({name: "Bob" , score : 0});
            PlayersList.insert({name: "Wesley", score: -10000});
            }
            });
}
var selectedPlayer = Session.get('selectedPlayer');
console.log(selectedPlayer);
console.log(PlayersList.find(selectedPlayer));
return PlayersList.find(selectedPlayer);