0

更新:我已经更新了大括号

我在保存 .there 之前有验证方法,如果一个条件满足并应该退出,则执行一个 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
  });

..但它返回错误标志以进行保存并且不退出每个

我该怎么做才对??

4

2 回答 2

1

:edit 在你更正你的代码之后

所以你的问题是如果两个 if 语句的条件匹配,你想返回 true。这在 $.each 循环中不起作用,因为循环只是将函数作为集合中每个项目的回调运行。

它基本上和你有的一样

 for(var key in $scope.vacationSummaries){
     var v = $scope.vacationSummaries[key];
     ...
 }

在 for each 循环中,您不能使用 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 中的每个循环都是正常的并实现您的逻辑因此

于 2013-10-12T23:01:57.910 回答
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;

}
于 2013-10-13T03:25:28.947 回答