Ваш код на самом деле работает: https://jsfiddle.net/BPagoaga/8jcuqds7/1/
<!DOCTYPE html>
<html ng-app="app">
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
</head>
<body >
<div ng-controller="GameController" class='container'>
<h1>Palindrome Game</h1>
<h2>Submit a new word!</h2>
<form role='form'>
<div class='form-group'>
<input ng-model="name" class='form-control' placeholder="Your name">
<input ng-model="word" class='form-control' placeholder="Word">
<button ng-click='submitEntry()' class='btn btn-default'>Submit word</button>
</div>
</form>
<h2>Top Scores</h2>
<ul class='list-group'>
<li ng-repeat="score in scores | orderBy:'-points'" class='list-group-item'>
<strong>{{score.name}}</strong> {{score.points}} points
</li>
</ul>
</div>
</body>
</html>
var app = angular.module('app', []);
app.controller('GameController', function($scope, GameService)
{
var highScores = GameService.getScores();
$scope.scores = highScores;
$scope.submitEntry = function()
{
if (typeof $scope.name === 'undefined' || typeof $scope.word === 'undefined')
{
return;
}
var entry = {
name: $scope.name,
word: $scope.word
};
var score = GameService.submitEntry(entry);
var userScore = {
name: entry.name,
points: score
};
if (score > 0)
{
if ($scope.scores.length < 5)
{
$scope.scores.push(userScore);
localStorage.setItem("highScores", JSON.stringify($scope.scores));
return;
}
else
{
for (let i = 0; i < $scope.scores.length; i++)
{
if (score > $scope.scores[i].points)
{
$scope.scores.splice(i, 1, userScore);
localStorage.setItem("highScores", JSON.stringify($scope.scores));
return;
}
}
}
}
};
});
app.service('GameService', function($http)
{
this.getScores = function()
{
var hs = [];
if(localStorage.getItem('highScores') != null)
{
hs = localStorage.getItem('highScores');
if (hs)
{
hs = JSON.parse(hs);
}
}
return hs;
};
this.submitEntry = function(entry)
{
var score = 0;
var revStr = "";
var str = entry.word;
var i = str.length;
for(var j=i; j>=0; j--)
{
revStr = revStr + str.charAt(j);
}
if(str == revStr)
{
alert(str + " is Palindrome");
score = str.length;
}
else
{
alert(str + " is not a Palindrome");
}
return score;
};
});
Я удалил это:
<script src="ng/app.js"></script>`
, но я не уверен, было ли это проблемой.
В зависимости от того, как вы тестировали свой код (фрагмент кода в stackoverflow, jsfiddle) и в каком браузере, вы можете столкнуться с некоторыми проблемами при использовании той же политики источника.
В chrome мне пришлось снять флажок «Блокировать»сторонние куки ", чтобы заставить его работать.В Firefox он все еще не работает, операция заблокирована, потому что браузер считает ее небезопасной.
Я предлагаю вам попробовать код локально на вашем компьютере, а не в онлайн-песочницах, таких как jsFiddle.