更新:我更新了大括号
我在保存之前有验证方法。有一个foreach循环执行,如果一个条件满足则应该返回bool标志并且应该退出
$.each($scope.vacationSummaries, function (i, v)
{
if (Number($scope.vacationRequest.VacationType.Id) == Number(v.VacationType.Id))
{
if (v.Remaining > 0)
return true; //for returning a true flag for save
}
return false; // for exiting for each loop
});
..但它会返回false标志以进行保存而不会退出每个
我该怎么办?
答案 0 :(得分:1)
:更正代码后编辑
所以你的问题是,如果两个if语句的条件匹配,你想返回true。这在$ .each循环中不起作用,因为循环只是将函数作为集合中每个项的回调运行。
它基本上和你想要的一样
for(var key in $scope.vacationSummaries){
var v = $scope.vacationSummaries[key];
...
}
在每个循环中,你不能使用return。
相反,您必须对对象实例v
执行某些操作。如果要标记某些内容,请在开始循环之前定义变量并指定true或false。只需标记循环内的对象即可。或者,如果您想对该对象执行某些操作,请调用另一个函数...
一些例子:
var flag=false;
$.each($scope.vacationSummaries, function (i, v)
{
if (Number($scope.vacationRequest.VacationType.Id) == Number(v.VacationType.Id))
{
if (v.Remaining > 0) {
flag = true; //assigning flag which can be used after the loop?
save(v); // call a method which does something with v?
}
}
return false; // for exiting for each loop
});
老实说,我并不完全知道你想要实现什么,因为我只能看到你代码的这一小部分;) 简单地想一下$ .each方法,好像它对C#或JavaScript中的每个循环都是正常的,并相应地实现你的逻辑
答案 1 :(得分:0)
$scope.vacations = function() {
var check = false;
angular.forEach($scope.vacationSummaries,function(v,i) {
if (Number($scope.vacationRequest.VacationType.Id) == Number(v.VacationType.Id)) {
if (v.Remaining > 0) {
check = true; //for returning a true flag for save
}
} else {
check = false; // for exiting for each loop
}
});
return check;
}