0

私はangularjsに比較的慣れていません。
フォームを送信しようとすると、ng submit がトリガーされません。また、 $scope.user にアクセスできないため、サーバーに投稿できません。何が悪いのかわからない!

<div ng-controller="contactController">
                <form name="myForm" class="form-horizontal" role="form" ng-submit="submit()">
                    <div class="form-group">
                        <label for="company" class="col-md-4 control-label">Company Name</label>
                        <div class="col-md-4">
                            <input type="text" class="form-control" id="company" placeholder="Company Name" ng-model="user.company" required> </div>
                    </div>
                    <div class="form-group">
                        <label for="firstName" class="col-md-4 control-label">First Name</label>
                        <div class="col-md-4">
                            <input type="text" class="form-control" id="firstName" placeholder="First Name" ng-model="user.firstname" required> </div>
                    </div>
                    <div class="form-group">
                        <label for="lastName" class="col-md-4 control-label">Last Name</label>
                        <div class="col-md-4">
                            <input type="text" class="form-control" id="lastName" placeholder="Last Name" ng-model="user.lastname" required> </div>
                    </div>
                    <div class="form-group" ng-class="{'has-error': myForm.phone.$error.number}">
                        <label for="tel" class="col-md-4 control-label">Phone Number</label>
                        <div class="col-md-4">
                            <input type="number" class="form-control" id="phone" placeholder="Phone Number" ng-minlength="10" ng-maxlength="10" ng-model="user.phone" ng-required="true" name="phone"> <span class="help-block" ng-show="myForm.phone.$error.required || 
                               myForm.phone.$error.number">
                               Valid phone number is required
                </span> <span class="help-block" ng-show="((myForm.phone.$error.minlength ||
                               myForm.phone.$error.maxlength) && 
                               myForm.phone.$dirty) ">
                               phone number should be 10 digits
                </span> </div>
                    </div>
                    <div class="form-group">
                        <label for="email" class="col-md-4 control-label">Email</label>
                        <div class="col-md-4">
                            <input type="email" class="form-control" id="email" placeholder="Email" ng-model="user.email" name="input" required> <span class="error" ng-show="myForm.input.$error.required">
                                Required!</span> <span class="error" ng-show="myForm.input.$error.email">
                                Not valid email!</span> </div>
                    </div>
                    <div class="form-group">
                        <label for="comments" class="col-md-4 control-label">Comments</label>
                        <div class="col-md-4">
                            <textarea id="text" class="form-control" placeholder="Comments" cols=10 ng-model="user.comments"></textarea>
                        </div>
                    </div>
                    <!--<div class="form-group">
                    <div class="g-recaptcha pull-right" data-sitekey=""></div></div>-->
                    <div class="form-group">
                        <div class="col-md-4">
                            <button type="submit" class="btn btn-success" ng-click="reset()">Submit</button>
                        </div>
                    </div>
                </form>
            </div>

私のコントローラー:

myApp.controller('contactController', ['$scope', '$http', function ($scope, $http) {
    //$.getScript("https://www.google.com/recaptcha/api.js");
    var user = {
        "company": ""
        , "firstname": ""
        , "lastname": ""
        , "phone": ""
        , "email": ""
        , "comments": ""
    };
    $scope.submit = function () {
        console.log($scope.user);
        $http({
            method: 'POST'
            , url: '/contactUs'
            , data: $scope.user, //forms user object
            headers: {
                'Content-Type': 'application/x-www-form-urlencoded'
            }
        }).success(function (data) {
            console.log('Got a response');
            $scope.reset;
        }).error(function (data) {
            console.log("error detected");
        });
    }
    $scope.reset = function () {
        $scope.user = angular.copy(user);
        $scope.myForm.$setPristine();
        $scope.myForm.$setUntouched();
    }
}]);
4

1 に答える 1

0

A)$scope.reset関数が最初に呼び出されます。

B)リセット機能は、空白$scope.userの のコピーに設定されます。user

これが機能しない理由です。$scope.user送信する前に空白にしています。したがって、$scope.user無効なフォーム データで埋められます。

送信ボタンの ng-click を取り除くだけです。そして、成功を$scope.submit収め$scope.resetました。あなたはそれをやろうとしていたように見えますが、これは:

 $scope.reset;

これである必要があります:

 $scope.reset();

成功のコールバック。

于 2016-09-22T03:45:04.487 に答える