我正在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);
}
});
我相信我的代码中的错误应该在代码的这一部分中(因为它在quizCtrl.js中的第23行之后崩溃
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);
}
}
}
}
答案 0 :(得分:0)
我认为您的具体问题是您使用$scope.result.length
对结果进行迭代,然后在循环中继续推送到该数组。如果你注释掉for循环中的4行,那么它就不会破坏它。所以我认为继续进行迭代的结果数组导致问题。
This可能会对您有所帮助。
&#34;检查错误已断开连接错误&#34;当您通过浏览器开发某个网页或某些CORS请求时,您尝试访问的文件太大而无法让浏览器处理或插件干扰我们的程序(我们正在开发的程序)。
解决方案: 尝试禁用所有插件或涉及允许CORS或禁用提供相同功能的插件(例如,您可能有2-3个插件执行允许CORS可能会干扰的相同工作)。 检查您正在访问的文件(当然,只有在您开发某些Web服务,应用程序或某些Web开发时才可以检出该文件,以便该文件在本地存在)。