我有一个数组betSlip
,我正在做一些验证,让我们说数组现在有4个索引,每个索引都有input
所以我有4个输入,每个索引一个。
示例:我在输入中键入的值:
1输入:10
2输入:10
3输入:10
4输入:10
下一个输入不能大于前一个。 在我的应用程序中意味着如果我转到第二个输入并输入数字1,输入3和4应该再次返回0。但是到目前为止,我在我的应用程序中已经有了它,如果你在第二个输入中键入1,那么只有第三个输入会回到0而不是其他输入。
所以,要明确:如果我有10个输入,我在每个输入中输入数字100,然后我转到第3个输入并输入99,那么其余的输入应该回到0.除了以前的输入。
我正在使用Angular和Lodash。
我拍了几张照片
在这个图像中,我在第二个输入中键入1,只有第三个输入在0,我需要将每个输入重新设置为0,与当前索引分开。
这里是我的代码:
$scope.riskWinCalculations2 = function(slip, type, index) {
var previousSlip = $scope.betSlip[index - 1],
currentSlip = $scope.betSlip[index],
nextSlip = $scope.betSlip[index + 1];
if (currentSlip.risk.length && nextSlip != undefined) {
if (currentSlip.risk < nextSlip.risk) {
nextSlip.risk = 0;
nextSlip.win = 0;
}
}
}
我知道我的错误就在这个var nextSlip
中,我所做的就是告诉应用程序在下一个输入中放入一个空字符串,如果当前的一个数量较少。但这就是为什么我在这里,我需要知道如何解决它,考虑所有下一个输入,而不仅仅是正确的下一个输入。
更新以添加更多解释
如果每个输入都有10作为值,并且您有5个输入,则表示:
1输入:10
2输入:10
3输入:10
4输入:10
5输入:10
如果你转到第3个输入并输入5,则表示:
1输入:10
2输入:10
3输入:5
4输入:0
5输入:0
所以,正如您所看到的那样,其他输入返回到0,这是初始值。但以前的输入保持不变。
答案 0 :(得分:1)
如果我理解正确,我使用ng-repeat
和ng-blur
完成了上述逻辑。如果缺少任何逻辑,请告诉我。
<div ng-app>
<h2>Todo</h2>
<div ng-controller="TodoCtrl">
<p ng-repeat='data in datas'>
<label>{{$index+1}}</label><input ng-model='data.value' ng-blur='checkRisk($index)'/>
</p>
</div>
</div>
function TodoCtrl($scope) {
$scope.datas = [{value:10},{value:10},{value:10},{value:10},{value:10}];
$scope.checkRisk = function(index){
for(var i=index+1;i<$scope.datas.length;i++){
$scope.datas[i].value=0;
}
};
}
答案 1 :(得分:1)
//if the user tries to play with the input:
//he can not put lower amount in a previous input,
//when the next input is already filled out
_.each($scope.betSlip, function(slip, indexSlip) {
if (indexSlip > index) {
slip.risk = '';
slip.win = '';
}
});