Javascript Js数组长度过早增加
我有一个基于条件的数组长度。我的问题是数组没有在正确的时间增加。 很难解释,因此我制作了一个plunker和示例代码: 当我第二次单击push时,我希望警报为“gt 1”。 我怎样才能解决这个问题?也许是柜台什么的Javascript Js数组长度过早增加,javascript,arrays,angularjs,Javascript,Arrays,Angularjs,我有一个基于条件的数组长度。我的问题是数组没有在正确的时间增加。 很难解释,因此我制作了一个plunker和示例代码: 当我第二次单击push时,我希望警报为“gt 1”。 我怎样才能解决这个问题?也许是柜台什么的 <div ng-repeat="user in data"> <a ng-click="pushUser(user)">push</a> </div> app.controller('MainCtrl', function(
<div ng-repeat="user in data">
<a ng-click="pushUser(user)">push</a>
</div>
app.controller('MainCtrl', function($scope) {
$scope.users = [];
$scope.data = [{name: 1} ,{name: 2}, {name:3}];
$scope.pushUser = function(user) {
if($scope.users.length > 1) {
alert('gt 1');
$scope.users.push(user);
} else {
alert('lt 1');
$scope.users.push(user);
}
}
});
按下,然后检查:
$scope.users.push(user);
if($scope.users.length => 1) {
alert('gt 1');
} else {
alert('lt 1');
}
由于数组users
的初始长度为0,因此当您第一次单击时,条件if($scope.users.length>1)
将计算为false。因此,else部分将在user
数组中添加一个元素
第二次,当您单击链接时,条件if($scope.users.length>1)
仍将被评估为false,因为数组的长度等于1
,而不是>1
。因此,else部分仍将被执行,并将导致user
数组的长度增加到2
随后的单击将导致警报显示为gt 1
。因此,如果($scope.users.length>=1),您应该将条件更改为。注意:运算符已更改,以指示数组长度是否大于或等于1,这在您第二次单击链接时是正确的。我不能在if内执行操作,然后按。if($scope.users.length>=1){-?您可能是指当我第三次单击push时,我希望警报为“gt 1”。而不是第二次。