我有一个基于条件的数组长度。我的问题是数组在正确的时间没有增加。 很难解释所以我做了一个plunker和示例代码:
当我第二次点击按下时,我希望警报为'gt 1'。 我怎么能解决这个问题?也许有柜台或什么?
<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);
}
}
});
答案 0 :(得分:0)
由于数组users
的初始长度为0,因此当您第一次单击时,条件if($scope.users.length > 1)
将被评估为false。因此,else部分最终会在user
数组中添加一个元素。
第二次,当您单击该链接时,条件if($scope.users.length > 1)
仍会被评估为false,因为数组的长度等于1
而不是>1
。因此,else部分仍然会被执行,并且会导致user
数组的长度增加到2。
后续点击将导致显示警告gt 1
。因此,要获得所需的结果,您应该将条件更改为if($scope.users.length >= 1)
。请注意,操作符已更改为指示数组长度是否大于或等于1,这在第二次单击链接时为true。
答案 1 :(得分:-1)
按,然后检查:
$scope.users.push(user);
if($scope.users.length => 1) {
alert('gt 1');
} else {
alert('lt 1');
}