为什么要替换而不是添加到对象上?
我也尝试使用this.push()
代替.concat()
,但完全相同的事情发生了,它会覆盖以前添加过的对象。
$scope.checkMatchinAnswer = function (required, ans, input) {
$scope.correctAnswers = [];
angular.forEach(required, function (value) {
if (angular.equals(value.answer, ans) && angular.equals(value.id, qid)) {
$scope.correctAnswers = $scope.correctAnswers.concat([{
id: qid,
answer: value.answer
}]);
}
});
}
答案 0 :(得分:0)
你似乎比这更复杂。
执行以下操作会设置一个新值,这不是您想要的。
$scope.correctAnswers =
看起来你只想推出新的声明,所以这样做:
$scope.correctAnswers.push({
id: qid,
answer: value.answer
})
答案 1 :(得分:0)
我的问题是我每次打电话时都在创建一个新范围:
$scope.correctAnswers = [];
我需要在函数之外创建范围并传递之前添加的内容:
$scope.checkMatchinAnswer = function(required, ans, input) {
if(!input){
$scope.correctAnswers = [];
}
angular.forEach(required, function (value) {
console.log(angular.equals(value.answer, ans), angular.equals(value.id, qid));
if(angular.equals(value.answer, ans) != false && angular.equals(value.id, qid) != false){
this.push({ id: qid, answer: value.answer });
}
}, $scope.correctAnswers);
return $scope.correctAnswers;
}
然后在外面我会使用这个条件:
if($scope.correctAnswers != []) {
$scope.checkMatchinAnswer(content.required, ans, $scope.correctAnswers);
} else {
$scope.correctAnswers = $scope.checkMatchinAnswer(content.required, ans);
}