У меня есть 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.info(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.info(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.info(PlayerNameVar);
PlayersList.insert({
name:PlayerNameVar,
score:0
});
}
});
}
if (Meteor.isServer){
console.info("Hello Server!");
}
Это ошибка:
While processing files with ecmascript (for target web.browser): main.js:38:34: Unexpected token, expected "," (38:34)
While processing files with ecmascript (for target os.windows.x86_32): main.js:38:34: Unexpected token, expected "," (38:34)
Строка 38 находится в Template.addPlayerForm.events:
'submit form': fucntion(event){
@Ankit Большое спасибо !! Как я слеп, чтобы пропустить это



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Как выяснил Ankit, вам нужно исправить опечатку. Это function, также я предлагаю вам использовать такие редакторы, как Возвышенный, Атом или VS КОД, чтобы избавиться от таких опечаток.
Спасибо!! По иронии судьбы я использую Atom, но, полагаю, это все еще происходит из-за отсутствия опыта. В любом случае я оставлю это для новичков, таких как я, в качестве справки.
'submit form': fucntion(event){- опечатка - функция вместо функции