1

フォームを含み、DOM に非同期的に読み込まれるモーダル ウィンドウを含む AngularJS アプリケーションを構築しています (適切なボタンがクリックされたとき)。フォームは正常に機能しますが、有効かどうかを適切に確認できません。次に例を示します。

HTML

<div ng-app="myapp" ng-controller="MyCtrl">
    <form novalidate name="myform" ng-submit="submitForm(myform)">
        <input type="text" required ng-model="myname" />
    </form>
</div>

JavaScript

var app = angular.module('myapp', []);
app.controller("MyCtrl", function($scope) {
    $scope.submitForm(form) {
        if(form.$valid) {
            // Do http stuff here
        }
    };
});

このフォームが非同期で読み込まれる場合、フォーム変数の値は NaN になり、form.$valid は未定義になります。ただし、ページの残りの部分をロードすると、正常に動作します。AngularJS にフォームのスコープ変数を入力させる方法を知っている人はいますか? ありがとう!

4

1 に答える 1

1

ng-include を使用してフォームを含めると、childScope が作成されます。親スコープと子スコープは、お互いのスコープにアクセスできません。したがって、.$valid は空になります。

私は先日同様の問題を抱えていて、このスレッドで私に合った実用的な解決策を得ました:

childScope フォームの AngularJS $setValidity

于 2013-08-23T19:38:11.510 に答える