Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.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 Angular Js:错误消息get displayed utill页面加载完成_Javascript_Jquery_Angularjs_Html - Fatal编程技术网

Javascript Angular Js:错误消息get displayed utill页面加载完成

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

下面是表单的Html代码。这里唯一的问题是,直到页面加载完成,才会显示错误消息。 有什么建议吗

编辑

我正在分享这个问题的视频链接

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>