2013-12-06 2 views
-4

У меня есть следующий код:Могу ли я сделать функцию внутри другой функции и вызвать ее с помощью Javascript?

 modalOpen: function ($scope) { 
      $scope.view = $scope.modal.action; 
      $scope.modalForm.$setPristine(); 
      $scope.view = $scope.modal.action; 
      if ($scope.modal.action != "delete") { 
       $scope.modal.timeout = window.setTimeout(function() { 
        $scope.modal.interval = window.setInterval(function() { 
         if (($scope.view == "edit" || $scope.view == "new") && !$scope.modalForm.$pristine) { 
          factory.modalSubmit($scope, $scope.modal.data, true); 
         } 
        }, 5 * 60 * 1000); 
        if (($scope.view == "edit" || $scope.view == "new") && !$scope.modalForm.$pristine) { 
         factory.modalSubmit($scope, $scope.modal.data, true); 
        } 
       }, 5 * 60 * 1000); 
      } 
     }, 

Есть ли способ, которым я мог бы инкапсулировать следующее:

if (($scope.view == "edit" || $scope.view == "new") && !$scope.modalForm.$pristine) { 
          factory.modalSubmit($scope, $scope.modal.data, true); 
         } 

, так что я могу использовать его и не придется повторять одни и те же линии?

ответ

1
modalOpen: function ($scope) { 
     $scope.view = $scope.modal.action; 
     $scope.modalForm.$setPristine(); 
     $scope.view = $scope.modal.action; 

     function maybe_submit() { 
      if (($scope.view == "edit" || $scope.view == "new") && !$scope.modalForm.$pristine) { 
       factory.modalSubmit($scope, $scope.modal.data, true); 
      } 
     } 

     if ($scope.modal.action != "delete") { 
      $scope.modal.timeout = window.setTimeout(function() { 
       $scope.modal.interval = window.setInterval(maybe_submit, 5 * 60 * 1000); 
       maybe_submit(); 
      }, 5 * 60 * 1000); 
     } 
    }, 
1
var modalSubmit = function() { 
    if (($scope.view == "edit" || $scope.view == "new") && !$scope.modalForm.$pristine) { 
     factory.modalSubmit($scope, $scope.modal.data, true); 
    } 
} 
$scope.modal.timeout = window.setTimeout(function() { 
    $scope.modal.interval = window.setInterval(function() { 
     modalSubmit(); 
    }, 5 * 60 * 1000); 
    modalSubmit(); 
}, 5 * 60 * 1000); 
Смежные вопросы