首页 > Angularjs+requirejs ngMessages校验问题

Angularjs+requirejs ngMessages校验问题

问题描述:
我使用requirejs+angularjs+ngMessages参照官方文档写了一个校验的DEMO,但是下图中$error的错误提示正确,但是
<div ng-message="myForm.myName.$error" style="color:maroon">
<div ng-message="required">You did not enter a field</div>
<div ng-message="minlength">Your field is too short</div>
<div ng-message="maxlength">Your field is too long</div>
</div>
中提三行错误提示文字,却一直显示。

可以帮助我看一下是哪里出现问题了吗?

代码:
main.js:

requirejs.config({
    paths: {
       'angular': '//ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular.min',
        'app': 'app',
        'lodash': 'https://cdn.jsdelivr.net/lodash/4.13.1/lodash.min',
        'ngMessages': '//ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular-messages'
    },  
    shim: {
        'angular': {
          exports: 'angular'
        },
        'ngMessages': ['angular'],
        'app': ['angular']
    }
});
require(['angular','ngMessages',
    'app'
    ], function(angular){
        angular.element(document).ready(function(){
            angular.bootstrap(document, ['myApp']);
        });
 })

index.html

<!DOCTYPE html>
<html>
<head>
</head>
<body>
  <script data-main="main" src="http://requirejs.org/docs/release/2.1.11/minified/require.js"></script>
  <div ng-controller="TooltipDemoCtrl">
    <form name="myForm">
      <label>
        Enter your name:
        <input type="text" name="myName" ng-model="name" ng-minlength="5" ng-maxlength="20" required />
      </label>
      <pre>myForm.myName.$error = {{ myForm.myName.$error | json }}</pre>
      <div ng-message="myForm.myName.$error" style="color:maroon">
        <div ng-message="required">You did not enter a field</div>
        <div ng-message="minlength">Your field is too short</div>
        <div ng-message="maxlength">Your field is too long</div>
      </div> 
    </form>
  </div>
</body>
</html>

app.js

define(['require', 'lodash'], function(require, _) {
  var angular = require('angular');
  angular.module('myApp', []).controller('TooltipDemoCtrl', function($scope) {
  })
});

DEMO代码地址:
http://plnkr.co/edit/AWVXcU8CWQTXFqu6pVtL?p=preview


试试我这个:plunker

<div ng-controller="TooltipDemoCtrl">
    <form name="myForm">
      <label>
        Enter your name:
        <input type="text" name="myName" ng-model="name" ng-minlength="5" ng-maxlength="20" required />
      </label>
      <pre>myForm.myName.$error = {{ myForm.myName.$error | json }}</pre>
    
      <div ng-messages="myForm.myName.$error" style="color:maroon">
        <div ng-message="required">You did not enter a field</div>
        <div ng-message="minlength">Your field is too short</div>
        <div ng-message="maxlength">Your field is too long</div>
      </div> 
    
    </form>
</div>

app.js

define(['lodash', 'angular'], function( _, angular) {
  
    angular.module('myApp', ['ngMessages'])
    .controller('TooltipDemoCtrl', function($scope) {

  
    });
});

main

requirejs.config({
    paths: {
       'angular': '//ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular.min',
       'app': './app',
       'lodash': 'https://cdn.jsdelivr.net/lodash/4.13.1/lodash.min',
       'ngMessages': '//ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular-messages.min'
    },  
    shim: {
        angular: {
          exports: 'angular'
        },
            ngMessages: ['angular'],
            app: ['ngMessages']
    }
});

require(['angular','app'], function(angular, app){
    angular.bootstrap(document, ['myApp']);
});
【热门文章】
【热门文章】