如何返回或退出角度js中的$ scope函数

时间:2017-09-06 10:17:13

标签: javascript angularjs

在某些情况下,我想退出我的$ scope函数。我正在尝试使用 return 。但是没有运气只能从每个循环返回,而不是从主范围函数返回。在我的代码中,甚至d.xyz都是真的f2函数被调用。如果dy的xyz变为真,我想退出f1。

$scope.f1 = function(){
 angular.foreach(data, function(d){
  if(d.xyz){
   return; // tried with return false also
  }
  if(d.abc){
  //some code 
  }
  $scope.f2();
 })
}

5 个答案:

答案 0 :(得分:2)

你无法真正退出angular的forEach函数。您可以做的最好的事情是确保在退出条件为真后每次迭代都返回回调。

所以你会这样做:

$scope.f1 = function(){
    var stopRunning = false;
    angular.foreach(data, function(d){
        if(stopRunning){
            return;
        }
        if(d.xyz){
            stopRunning = true;
            return;
        }
        if(d.abc){
            //some code 
        }
        $scope.f2();
    })
}

答案 1 :(得分:1)

     angular.module("test",[]).controller("testC",function($scope){
         $scope.data = [{"test":1},{"test":2}];
         $scope.IsExist=false;
         $scope.testF=function() {
         for(var i=0;i<$scope.data.length;i++){
              if($scope.data[i].test==1){ 
              alert(1);
               $scope.IsExist=true;
              }else if($scope.data[i].test){
              }
              
              if($scope.IsExist)
              {
               return false;
              }
              $scope.testF();
             }
          }
         $scope.testF();
         });
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
        <div ng-app="test" ng-controller="testC">   
        </div>

答案 2 :(得分:0)

您应该在函数中使用return语句。它没有退出,因为你在angular.foreach回调函数中使用return。尝试在外面使用。

答案 3 :(得分:0)

$scope.f1 = function(x = true){
 angular.foreach(data, function(d){
  if(d.xyz){
   x = false;
   return; // tried with return false also
  }
  if(d.abc){
  //some code 
  }
  $scope.f2();
 })
 if (!x){
  return;
 }
}

基本上你没有退出f1()。这将为你做到这一点。

答案 4 :(得分:-2)

我认为你应该使用break;。如果您使用的是return;,则其效果类似于continue;