Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript angularjs-无法访问表单对象_Javascript_Angularjs - Fatal编程技术网

Javascript angularjs-无法访问表单对象

Javascript angularjs-无法访问表单对象,javascript,angularjs,Javascript,Angularjs,我对AngularJS的格式有问题。我需要进行自定义验证。但我无法访问模板(或控制器)中的表单或$error对象来实现此目的。 我以前在其他项目中也这样做过,而且一直有效。我设法发现,表单处于某种奇怪的状态。我试图在模板中显示它的内容,但它不起作用。当我调用表单myForm并在HTML中的某个地方编写{{myForm}时,我希望看到如下内容: {“$error”:{},“$name”:“myForm”,“$dirty”:false,“$pristine”:true,“$valid”:true,“

我对AngularJS的格式有问题。我需要进行自定义验证。但我无法访问模板(或控制器)中的表单或
$error
对象来实现此目的。 我以前在其他项目中也这样做过,而且一直有效。我设法发现,表单处于某种奇怪的状态。我试图在模板中显示它的内容,但它不起作用。当我调用表单myForm并在HTML中的某个地方编写
{{myForm}
时,我希望看到如下内容:

{“$error”:{},“$name”:“myForm”,“$dirty”:false,“$pristine”:true,“$valid”:true,“$invalid”:false,“$submitted”:false,”,user:{“$viewValue”:“John” Doe“,“$modelValue”:“John” Doe“,“$validators”:{},“$asyncValidators”:{},“$parsers”:[],“$formatters”:[null],“$viewChangeListeners”:[],“$untouched”:true,“$touched”:false,“$pristine”:true,“$dirty”:false,“$valid”:true,“$invalid”:false,“$error”:{},“$options”:null,“$name”:“电子邮件”:{“$viewValue”:“john”。doe@gmail.com“,“$modelValue”:“约翰。doe@gmail.com“,“$validators”:{},“$asyncValidators”:{},“$parsers”:[],“$formatters”:[null],“$viewChangeListeners”:[],“$untouched”:true,“$touched”:false,“$pristine”:true,“$dirty”:false,“$valid”:true,“$invalid”:false,“$error”:{},“$name”:“email”,“$options”:null}

然而,在当前的项目中,我看到了:

{"user":{},"email":{}}
{"$error":{},"$name":"myForm","$dirty":false,"$pristine":true,"$valid":true,"$invalid":false,"$submitted":false,"user":{"$viewValue":"John Doe","$modelValue":"John Doe","$validators":{},"$asyncValidators":{},"$parsers":[],"$formatters":[null],"$viewChangeListeners":[],"$untouched":true,"$touched":false,"$pristine":true,"$dirty":false,"$valid":true,"$invalid":false,"$error":{},"$name":"user","$options":null},"email":{"$viewValue":"john.doe@gmail.com","$modelValue":"john.doe@gmail.com","$validators":{},"$asyncValidators":{},"$parsers":[],"$formatters":[null],"$viewChangeListeners":[],"$untouched":true,"$touched":false,"$pristine":true,"$dirty":false,"$valid":true,"$invalid":false,"$error":{},"$name":"email","$options":null}}
为什么它被缩小了

以下是完整的源代码示例:

<!DOCTYPE html>
<html>
<script src= "http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>  
<body>

<h2>Validation Examplea</h2>

<form ng-app="myApp" ng-controller="validateCtrl" 
name="myForm" novalidate>

<p>Username:<br>
<input type="text" name="user" ng-model="user" required>
<span style="color:red" ng-show="myForm.user.$dirty && myForm.user.$invalid">
<span ng-show="myForm.user.$error.required">Username is required.</span>
</span>
</p>

<p>Email:<br>
<input type="email" name="email" ng-model="email" required>
<span style="color:red" ng-show="myForm.email.$dirty && myForm.email.$invalid">
<span ng-show="myForm.email.$error.required">Email is required.</span>
<span ng-show="myForm.email.$error.email">Invalid email address.</span>
</span>
</p>

<p>
<input type="submit"
ng-disabled="myForm.user.$dirty && myForm.user.$invalid ||  
myForm.email.$dirty && myForm.email.$invalid">
</p>
{{myForm}}
</form>

<script>
var app = angular.module('myApp', []);
app.controller('validateCtrl', function($scope) {
    $scope.user = 'John Doe';
    $scope.email = 'john.doe@gmail.com';
});
</script>

</body>
</html>
在联机编辑器中,我看到以下内容:

{"user":{},"email":{}}
{"$error":{},"$name":"myForm","$dirty":false,"$pristine":true,"$valid":true,"$invalid":false,"$submitted":false,"user":{"$viewValue":"John Doe","$modelValue":"John Doe","$validators":{},"$asyncValidators":{},"$parsers":[],"$formatters":[null],"$viewChangeListeners":[],"$untouched":true,"$touched":false,"$pristine":true,"$dirty":false,"$valid":true,"$invalid":false,"$error":{},"$name":"user","$options":null},"email":{"$viewValue":"john.doe@gmail.com","$modelValue":"john.doe@gmail.com","$validators":{},"$asyncValidators":{},"$parsers":[],"$formatters":[null],"$viewChangeListeners":[],"$untouched":true,"$touched":false,"$pristine":true,"$dirty":false,"$valid":true,"$invalid":false,"$error":{},"$name":"email","$options":null}}

示例来自此站点:

我们需要查看一个工作示例才能确定问题您是否确保已在HTML中的表单标记上分配了name属性?我复制了w3教程中有关表单验证的源代码。它在其他应用程序中工作,也在w3 online editor中工作,但相同的代码在我的pr中不起作用项目。看起来是一些设置或什么…后来我发现,angular可执行表单的工作原理与angular中的基本表单略有不同,我正在使用可执行表单。但是,当我在项目中尝试基本简单表单时,它仍然不对。我可以访问表单属性,如$error等,但整个表单转储是不可能的模版里有点奇怪。