Я делаю небольшое приложение Quiz в Angular.js. Я использую функцию ng-click для тестирования, если ответ, который я выбираю, является правильным или неправильным, используя документ JSON. Когда я нажимаю на anwser и решаю изменить это (true для false или false для true), я получил проверенную цель, отключенную от Google Chrome.
Я пытался использовать Google Chrome без расширения.
index.html
<!DOCTYPE html>
<html ng-app="quizApp" lang="en">
<head>
<meta charset="UTF-8">
<title>Quiz</title>
<link rel="stylesheet" href="css/style.css">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.7/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.7/angular-route.min.js"></script>
<script src="app/app.js"></script>
<script src="app/quizCtrl.js"></script>
</head>
<body>
<div class="main">
<div ng-view></div>
</div>
</body>
</html>
app.js
var app = angular.module('quizApp', ['ngRoute'])
angular.module('quizApp').config(['$routeProvider', function($routeProvider) {
var routes = [
{
url: '/home',
template: 'templates/quiz.html',
controller: 'quizCtrl'
}
];
routes.forEach(function(r, index) {
$routeProvider.when(r.url, { templateUrl: r.template, controller: r.controller});
});
$routeProvider.otherwise({ redirectTo : '/home' });
}]);
quizCtrl.js
app.controller('quizCtrl', function($scope, $http) {
$scope.responses =
$http({
method : 'GET',
url : './data/quiz.json'
}).then(function successCallBack(data) {
$scope.datas = data.data;
}, function errorCallback(data) {
console.log("Error");
});
$scope.result = [];
$scope.isTrue = function(response) {
$scope.json = angular.fromJson(response);
if ($scope.result.length == 0) {
if($scope.json.isTrue) {
$scope.result.push($scope.json.id, true);
}
else {
$scope.result.push($scope.json.id, false);
}
}
else {
console.log($scope.result.length);
for (var i = 0; i < $scope.result.length; i++) {
if ($scope.result[i] == $scope.json.id) {
$scope.result.splice(i, 2);
if($scope.json.isTrue) {
$scope.result.push($scope.json.id, true);
}
else {
$scope.result.push($scope.json.id, false);
}
}
else {
if ($scope.result[i] == true || $scope.result[i] == false) {
console.log("do nothing " + i);
}
else {
if($scope.json.isTrue) {
$scope.result.push($scope.json.id, true);
}
else {
$scope.result.push($scope.json.id, false);
}
}
}
}
}
console.log($scope.result);
}
});
Я считаю, что ошибка в моем коде должна быть в этой части кода (потому что он сбой сразу после строки 23 в quizCtrl.js
for (var i = 0; i < $scope.result.length; i++) {
if ($scope.result[i] == $scope.json.id) {
$scope.result.splice(i, 2);
if($scope.json.isTrue) {
$scope.result.push($scope.json.id, true);
}
else {
$scope.result.push($scope.json.id, false);
}
}
else {
if ($scope.result[i] == true || $scope.result[i] == false) {
console.log("do nothing " + i);
}
else {
if($scope.json.isTrue) {
$scope.result.push($scope.json.id, true);
}
else {
$scope.result.push($scope.json.id, false);
}
}
}
}
Я думаю, что ваша конкретная проблема заключается в том, что вы повторяете результат с использованием $scope.result.length
а затем в цикле, который вы $scope.result.length
на этот массив. Если вы прокомментируете 4 строки в цикле for, которые нажимают на массив, он не прерывается. Поэтому я думаю, что надавливание на массив результатов, который вызывает повторение итерации.
Это может вам помочь.
"Исправлена ошибка с отключенной ошибкой" возникает, когда вы разрабатываете некоторую веб-страницу или некоторый запрос CORS через браузер, и либо файл, к которому вы пытаетесь получить доступ, слишком велик для браузера, чтобы его обрабатывать, либо плагины мешают нашей программе (тот, который мы разрабатываем).
Решение. Попробуйте отключить все плагины или те, которые включают в себя разрешение CORS или отключить те, которые обеспечивают такую же функциональность (например, у вас может быть 2-3 плагина, которые выполняют ту же работу, что позволяет CORS, которые могут мешать). Проверьте файл, к которому вы обращаетесь (конечно, вы можете проверить файл только в том случае, если вы разрабатываете некоторые веб-службы, приложения или некоторые веб-разработки, чтобы файл был локально).