4

入力で使用したフォームがありますrequired tag-これは正常に機能しますが、送信ボタンではng-click="visible = false"、データが送信されるとフォームが非表示になります。

すべての検証が正しい場合にのみ false に設定されるようにするにはどうすればよいですか?

App.js

 $scope.newBirthday = function(){

        $scope.bdays.push({name:$scope.bdayname, date:$scope.bdaydate});

        $scope.bdayname = '';
        $scope.bdaydate = '';

    };

HTML:

 <form name="birthdayAdd" ng-show="visible" ng-submit="newBirthday()">
        <label>Name:</label>
        <input type="text" ng-model="bdayname" required/>
        <label>Date:</label>
        <input type="date" ng-model="bdaydate" required/>
        <br/>
        <button class="btn" ng-click="visible = false" type="submit">Save</button>
      </form>
4

1 に答える 1

4

フォームに名前を付けると、FormController はその名前で最も近いコントローラー スコープで公開されます。したがって、あなたの場合、次のような構造があるとします

<div ng-controller="MyController">
    <!-- more stuff here perhaps -->
    <form name="birthdayAdd" ng-show="visible" ng-submit="newBirthday()">
        <label>Name:</label>
        <input type="text" ng-model="bdayname" required/>
        <label>Date:</label>
        <input type="date" ng-model="bdaydate" required/>
        <br/>
        <button class="btn" ng-click="onSave()" type="submit">Save</button>
      </form>
</div>

今あなたのコントローラーで

function MyController($scope){
    // the form controller is now accessible as $scope.birthdayAdd

    $scope.onSave = function(){
        if($scope.birthdayAdd.$valid){
            $scope.visible = false;
        }
    }
}

フォーム内の入力要素が有効な場合、フォームは有効になります。お役に立てれば。

于 2013-03-16T22:57:08.620 に答える