【问题标题】:Error while trying to bind multiple Meteor Template Events尝试绑定多个 Meteor 模板事件时出错
【发布时间】:2018-03-25 02:52:52
【问题描述】:

我有以下 2 个模板,我正在尝试将函数绑定到这些模板。如您所见,这是一个简单的应用程序,可以将具有名称和分数的对象添加到其 mongoDB 中。

这是 HTML 文件:

<head>
  <title>Leaderboard</title>
</head>
<body>
  <h1>Leaderboard</h1>
  {{> leaderboard}}
  <br /><br />
  {{>addPlayerForm}}
</body>

<template name="leaderboard">
  <ul>
    {{#each player}}
    <li class="player {{selectedClass}}"> {{name}} : {{score}} </li>
    {{/each}}
  </ul>
  <ul>
    {{#if showSelectedPlayer}}
    <li> Selected Player: {{showSelectedPlayer.name}} </li>
    {{/if}}
  </ul>
  <input type="button" class="increment" value="Give 5 Points"/>
  <input type="button" class  ="decrement" value="Minus 5 Points"/>
</template>
<template name="addPlayerForm">

  <form class="add-form">
    <input type="text" name="PlayerName" placeholder="Add player name here" />
    <input type="submit" name="Add Player" />
  </form>
</template>

完整的 JS 文件:

PlayersList = new Mongo.Collection('Players');
console.log(PlayersList);

if(Meteor.isClient){
  Template.leaderboard.helpers({
    'player': function(){
        return PlayersList.find( )
    },
    '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.findOne(selectedPlayer)
      }
  });
  Template.leaderboard.events({
    'click .player':function(){
      var playerID = this._id; //this refer to the current context:playerclicked
      Session.set('selectedPlayer', playerID);
      var selectedPlayer = Session.get('selectedPlayer');
      console.log(selectedPlayer);
    },
    'click .increment':function(){
    var selectedPlayer = Session.get('selectedPlayer');
    PlayersList.update(selectedPlayer,{$inc:{score:5}});
    },
    'click .decrement':function(){
    var selectedPlayer = Session.get('selectedPlayer');
    PlayersList.update(selectedPlayer,{$inc:{score:-5}});
    }
  });
  Template.addPlayerForm.events({
    'submit form': fucntion(event){
      event.preventDefault();
      var PlayerNameVar = event.target.PlayerName.value;
      console.log(PlayerNameVar);
      PlayersList.insert({
        name:PlayerNameVar,
        score:0
      });
    }
  });
}
if(Meteor.isServer){
  console.log("Hello Server!");
}

这是错误:

使用 ecmascript 处理文件时(针对目标 web.browser): main.js:38:34:意外的令牌,预期的“,”(38:34)

使用 ecmascript 处理文件时(针对目标 os.windows.x86_32): main.js:38:34:意外的令牌,预期的“,”(38:34)

第 38 行在 Template.addPlayerForm.events 中:

'submit form': fucntion(event){

【问题讨论】:

  • 'submit form': fucntion(event){ - 有一个错字 - 函数而不是函数
  • @Ankit 非常感谢!我是多么盲目地错过它

标签: javascript html meteor web


【解决方案1】:

正如 Ankit 所发现的,您需要更正错字。是function,另外我建议你使用Sublime、Atom或VS CODE之类的编辑器来去掉这些错别字。

【讨论】:

  • 谢谢!!具有讽刺意味的是,我正在使用 Atom,但由于缺乏经验,我猜它仍然会发生。无论如何,我会把它留给像我这样的初学者作为参考。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-26
  • 1970-01-01
  • 2014-04-01
  • 1970-01-01
  • 2013-12-26
相关资源
最近更新 更多