我可以在另一个函数中创建一个函数并使用Javascript调用它吗?

时间:2013-12-06 08:14:12

标签: javascript angularjs

我有以下代码:

        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);
                        }

这样我可以重复使用它而不必重复相同的行?

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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);
        }
    },