我是AngularJS的初学者,感谢Stackoverflow上的Angular社区愿意为像我这样的新手提供帮助,为此我学习得很好,非常感谢。
今天,我想在昨天进行的练习中添加一个功能(可以在here中找到)。我想记录用户键入的数字对,并将其显示为行列表。为此,我引入了一个数字对象数组。按下按钮会将当前对添加到阵列。
当前,似乎数组只包含成员,无论我执行什么操作来将新成员推入该数组。谁能帮我找到我的错误?
var saApp = angular.module("saApp", []);
saApp.controller('numberController', function($scope) {
$scope.numbers = [];
$scope.number = {
number1: 0,
number2: 0,
sumIt: function() {
var numberObject;
numberObject = $scope.number;
return parseInt(numberObject.number1) + parseInt(numberObject.number2);
}
};
$scope.pushIt = function() {
if ($scope.number !== undefined)
$scope.numbers.push($scope.number);
}
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="saApp" ng-controller="numberController">
<input type="text" ng-model="number.number1" placeholder="Enter a number here">
<input type="text" ng-model="number.number2" placeholder="Enter another number here">
<br />{{number.number1}} + {{number.number2}} = {{number.sumIt()}}
<br />
<br />
<button ng-click="pushIt()">Push</button>
<div ng-repeat="number in numbers">
{{number.number1}} + {{number.number2}} = {{number.sumIt()}}
<br />
</div>
</div>
最佳答案
当前代码中的一项更改只是克隆$scope.number
,然后再推送到$scope.numbers
数组中。
$scope. pushIt = function() {
if ($scope.number !== undefined)
$scope.numbers.push(angular.copy($scope.number));
}
为什么我们应该在推动之前克隆。
$ scope.number对象始终是相同的,因此数组中的所有元素都将具有相同的$$ hashkey,您将获得此error
因此,您应该在推送之前克隆或复制对象,以便数组中具有新的元素对象。
工作代码here
关于javascript - Angular作用域变量中的数组只有一个成员,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35643259/