Javascript Angular Js:错误消息get displayed utill页面加载完成
下面是表单的Html代码。这里唯一的问题是,直到页面加载完成,才会显示错误消息。 有什么建议吗 编辑 我正在分享这个问题的视频链接Javascript Angular Js:错误消息get displayed utill页面加载完成,javascript,jquery,angularjs,html,Javascript,Jquery,Angularjs,Html,下面是表单的Html代码。这里唯一的问题是,直到页面加载完成,才会显示错误消息。 有什么建议吗 编辑 我正在分享这个问题的视频链接 var-app=angular.module('myApp',[]); app.controller('validateCtrl',函数($scope){ }); 全名 电子邮件是必需的。 电子邮件地址 电子邮件是必需的。 无效的电子邮件地址。 拯救 取消 看起来您的代码实际上是按照您想要的方式工作的。我只是简单地复制/粘贴了它,它就工作了。 index.hm
var-app=angular.module('myApp',[]);
app.controller('validateCtrl',函数($scope){
});代码>
全名
电子邮件是必需的。
电子邮件地址
电子邮件是必需的。
无效的电子邮件地址。
拯救
取消
看起来您的代码实际上是按照您想要的方式工作的。我只是简单地复制/粘贴了它,它就工作了。
index.hmtl
<!DOCTYPE html>
<html>
<head>
<script src="https://code.angularjs.org/1.4.0-rc.1/angular.js"></script>
<script src="app.js"></script>
</head>
<body>
<form ng-app="validationApp" action="#" method="post" ng-controller="validateCtrl" name="myForm" novalidate>
<div class="form-group-custom">
<label>Full Name</label>
<input type="text" name="fullName" class="form-control" placeholder="Full Name" ng-model="fullName" required>
<span style="color:red" ng-show="(myForm.fullName.$dirty && myForm.fullName.$invalid)">
<span ng-show="myForm.fullName.$error.required">Name is required.</span>
</span>
</div>
<div class="form-group-custom">
<label for="exampleInputEmail1">Email address</label>
<input type="email" name="useremail" class="form-control" placeholder="Email" ng-model="useremail" required>
<span style="color:red" ng-show="myForm.useremail.$dirty && myForm.useremail.$invalid">
<span ng-show="myForm.useremail.$error.required">Email is required.</span>
<span ng-show="myForm.useremail.$error.email">Invalid email address.</span>
</span>
</div>
<div class="box-footer-custom">
<button class="btn btn-primary" type="submit">Save</button>
<button class="btn btn-danger" type="submit" style="margin-left:10px;">Cancel</button>
</div>
</form>
</body>
</html>
你可以做的是检查你的HTML头,确保你正确地包含了必需的脚本:AngularJS和你的JS文件 @Yann Lelong,只要javascript在html之前加载,代码就会按照@Arvind Jha希望的方式工作,如您的示例所示。但根据Arvind所说,javascript代码似乎是在事后加载的,而不是立即加载的(可能是因为服务器速度慢或网络速度慢)
我使用了Yann的Plnkr并对其进行了修改,以模拟如果不立即加载javascript代码可能发生的情况,并复制了该问题。解决方法是在angular更改为完全加载之前,将ng-clope
属性添加到要隐藏的元素中
考虑到ngclope
的css规则在angular.js中,建议在html的头部手动添加ngclope的样式规则
<head>
<style>
[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {
display: none !important;
}
</style>
</head>
[ng \:斗篷],[ng斗篷],[data ng斗篷],[x-ng-斗篷],.ng斗篷,.x-ng-斗篷{
显示:无!重要;
}
以及要使用ng斗篷隐藏的组件:
<div class="form-group-custom">
<label>Full Name</label>
<input type="text" name="fullName" class="form-control" placeholder="Full Name" ng-model="fullName" required>
<span style="color:red" ng-cloak ng-show="(myForm.fullName.$dirty && myForm.fullName.$invalid)">
<span ng-show="myForm.fullName.$error.required">Name is required.</span>
</span>
</div>
<div class="form-group-custom">
<label for="exampleInputEmail1">Email address</label>
<input type="email" name="useremail" class="form-control" placeholder="Email" ng-model="useremail" required>
<span style="color:red" ng-cloak ng-show="myForm.useremail.$dirty && myForm.useremail.$invalid">
<span ng-show="myForm.useremail.$error.required">Email is required.</span>
<span ng-show="myForm.useremail.$error.email">Invalid email address.</span>
</span>
</div>
全名
名称是必需的。
电子邮件地址
电子邮件是必需的。
无效的电子邮件地址。
这里是plnkr和我的更改:您是否尝试过使用$touch
属性?实际上,它可能更重要,因为元素在DOM中可见,直到Angular出现并开始工作。一种简单(有点黑客)的“修复”方法是手动添加display:none代码>添加到样式,就像添加颜色一样。但正确的方法可能是使用ng-clope
,只是别忘了在html顶部添加样式:
<div class="form-group-custom">
<label>Full Name</label>
<input type="text" name="fullName" class="form-control" placeholder="Full Name" ng-model="fullName" required>
<span style="color:red" ng-cloak ng-show="(myForm.fullName.$dirty && myForm.fullName.$invalid)">
<span ng-show="myForm.fullName.$error.required">Name is required.</span>
</span>
</div>
<div class="form-group-custom">
<label for="exampleInputEmail1">Email address</label>
<input type="email" name="useremail" class="form-control" placeholder="Email" ng-model="useremail" required>
<span style="color:red" ng-cloak ng-show="myForm.useremail.$dirty && myForm.useremail.$invalid">
<span ng-show="myForm.useremail.$error.required">Email is required.</span>
<span ng-show="myForm.useremail.$error.email">Invalid email address.</span>
</span>
</div>