AngularJS 1.4.1 ng-submit не запускается после сброса формы

0

Я знаю, что есть несколько старых вопросов со связанными темами, но я не нашел удовлетворительного ответа на этот вопрос, плюс эти ответы, похоже, для более старых версий Angularjs.

Моя проблема - это форма с угловой проверкой, и ng-submit не запускается после того, как она была отправлена один раз, даже после того, как данные модели были сброшены, а форма была нетронутой и установлена в нетронутую.

После первого представления форма сбрасывается визуально, как ожидалось, и корректно проверяется, если используется второй раз, включая активацию кнопки отправки при прохождении проверки. Сравнение кода формы перед любыми представлениями и после сброса создает идентичный HTML. Нажатие кнопки submit вызывает предварительный загрузчик, как было разработано. Однако действие ng-submit не будет срабатывать...

    $scope.resetMediaForm = function() {

        $scope.uploadMedia = {};
        $scope.uploadMedia.from = ''
        $scope.uploadMedia.message = ''
        $scope.uploadMedia.file = null;
        $scope.uploadMedia.fileType = '';
        $scope.uploadMedia.fileName = '';
        $scope.uploadMedia.done = false;
        $scope.uploadMedia.error = '';

        if ($scope.mediaForm) {
            $scope.mediaForm.$setUntouched();
            $scope.mediaForm.$setPristine();
            //$('form[name="'+$scope.mediaForm.$name+'"]')[0].reset();
        }

    };

    $scope.resetMediaForm();

    $scope.uploadMedia.submit = function() {

        var data = {
                from: $scope.uploadMedia.from,
                message: $scope.uploadMedia.message,
                file: $scope.uploadMedia.file,
                fileType: $scope.uploadMedia.fileType,
                fileName: $scope.uploadMedia.fileName
            };

        plotRemoteAPI.postMedia(data, function (data, status) {
            if (status >= 200 && status < 300) {
                if (data.success === true) {
                    $scope.resetMediaForm();
                } else {
                    $scope.uploadMedia.error = data.error;
                }   
            } else {
                $scope.uploadMedia.error = status;
            }
        }, function (data, status) {
            $scope.uploadMedia.error = data.error;
        });
    };

Plunkr: http://embed.plnkr.co/zO3lEqa7sfqYDvjHRnqa/preview

Теги:
angularjs-directive
ng-submit

1 ответ

1
Лучший ответ

Вы вызываете $scope.resetMediaData(); в вашем обработчике отправки, который уничтожает объект $scope.uploadMedia включая вашу функцию отправки (и она не получает redeclared). Я просто переместил $scope.uploadMedia = {}; вне функции resetMediaData().

http://plnkr.co/edit/OhRwsfnx3rX3gXZ2bilc?p=preview

  • 0
    Черт возьми! Конечно, функция отправки была уничтожена при сбросе данных. Отличный улов. Спасибо! Мне нужно подождать 21 час, чтобы наградить тебя за вознаграждение ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню