2016-03-14 51 views
1

我正在做一个简单的验证所需,但无法找到ng-Message工作在错误的条目或点击提交。有人能帮我解决我错在哪里吗?ngMessage不适用于AngularJs

HTML:

<html> 
<head> 
    <!-- Script Files --> 
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.8/angular.min.js"></script> 
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-messages.js"></script> 
</head> 
<body ng-app="myApp" ng-controller="myCtrl"> 

    <form name="form1" id="form1" novalidate> 
     <input type="text" name="age" ng-minlength="3" required/> 
     <div ng-messages="form1.age.$error" ng-show="(form1.age.$error.required || form1.age.$error.minlength) && (form1.age.$touched || form1.$submitted) " > 
      <div ng-message="required">This is required</div> 
      <div ng-message="minlength">Length is too less</div> 

     </div> 
     <a data-ng-click="submit(form1.$invalid)">Click</a> 
    </form> 

    <script> 
    //module declaration 
    var app = angular.module('myApp', ['ngMessages']); 
    //controller declaration 
    app.controller('myCtrl', function($scope) { 
     var submit = function(invalid){ 
      if(invalid) return; 
     } 
    }); 
    </script> 
</body> 
</html> 
+2

添加角度消息js文件。 //ajax.googleapis.com/ajax/libs/angularjs/XYZ/angular-messages.js –

+0

[ng-message未显示]的可能重复(http://stackoverflow.com/questions/35746963/ng-message-是不显示) – Zakaria

+0

这个问题是完全不同的。 Mine更简单,并且与基于$ touch和integer操作的单个输入的验证相关。 – Deadpool

回答

4

您的年龄输入没有ng-model。验证ALA仅MINLENGTH作品,如果ng-model存在:

<input type="text" name="age" ng-model="age" ng-minlength="3" required/> 

这是由于验证是如何工作的。当$ valid为false时,您会注意到ng-model没有设置。文档中总会有提示:https://docs.angularjs.org/api/ng/directive/ngMinlength

另外ng-model不需要与字段名称相同。