0

関連するトピックに関する古い質問がいくつかあることは知っていますが、これに対する満足のいく回答は見つかりませんでした。さらに、これらの回答はAngularjsの古いバージョンのもののようです.

私の問題は、角度検証のあるフォームであり、モデルデータがリセットされた後でも、一度送信された後でも ng-submit が起動せず、フォームはそのままで元の状態に設定されています。

最初の送信後、フォームは期待どおりに視覚的にリセットされ、2 回目に使用された場合は適切に検証されます (検証に合格したときに送信ボタンをアクティブにするなど)。送信前とリセット後のフォーム コードを比較すると、同一の HTML が生成されます。[送信] をクリックすると、プリローダーが設計どおりに表示されます。ただし、 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;
        });
    };

プランク: http://embed.plnkr.co/zO3lEqa7sfqYDvjHRnqa/preview

4

1 に答える 1