2013-08-23 84 views
1

我正在构建一个AngularJS应用程序,它包含模态窗口,其中包含窗体并被异步加载到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 
     } 
    }; 
}); 

如果这种形式的异步加载,表单变量值楠形式$有效是不确定的。但是,如果我加载页面的其余部分,它可以正常工作。有谁知道如何强制AngularJS填充窗体的范围变量?谢谢!

+0

你如何的形式加载到DOM? – sUP

+0

ngInclude。我只是切换模板文件路径进出,以改变模式的内容 – princjef

+1

http://stackoverflow.com/questions/17474045/how-can-i-set-a-form-contained-inside-a-ng-包括将要prestine 试试这里的答案,它可能会帮助 – sUP

回答

1

当您使用ng-include包含表单时,会创建一个childScope。父母和childScope不能访问各个范围的范围。因此。$ valid有空。

我有一个类似的问题,有一天,有适合我在这个线程工作的解决方案:

AngularJS $setValidity on childScope form