ng-message似乎不起作用

时间:2017-06-12 15:51:16

标签: javascript angularjs angularjs-directive ng-messages

我有一段代码,其中angularjs ng-message似乎不起作用。

这是JSfiddle

    <div ng-app="app" ng-controller="myctrl">
      <form name="myform" novalidate>
        error: {{myform.definition.$error}}
      <textarea ng-blur="handleBlur(myform)" 
                name="definition" 
                ng-model="$ctrl.definition"
                ng-blur="$ctrl.handleBlur(myform)">
      </textarea>
      <div ng-messages="myform.definition.$error">
        <div ng-message="validationError">
          Please enter a value for this field.
        </div>
      </div>
  </form>
</div>

控制器:

angular.module('app', []).controller('myctrl', function($scope) {
   $scope.someval = true;
   $scope.handleBlur = function(form) {
    form.definition.$error.validationError = false;
    $scope.someval = !$scope.someval
    form.definition.$error['validationError'] = $scope.someval;
  }
})

1 个答案:

答案 0 :(得分:0)

来自文档https://docs.angularjs.org/api/ngMessages#dynamic-messaging

  

随意使用其他结构指令,例如ng-if和   ng-switch进一步控制哪些消息是活动的以及何时消息。是   小心,如果你将ng-message放在与这些元素相同的元素上   结构指令,AngularJS可能无法确定是否   消息是否有效。因此,最好放置ng-message   在结构指令的子元素上。

发件人:

  <div ng-messages="myform.definition.$error">
    <div ng-message="validationError">
      Please enter a value for this field.
    </div>
  </div>

  <div ng-messages="myform.definition.$error">
    <div ng-if="showRequiredError">
      <div ng-message="validationError">
        Please enter a value for this field.
      </div>
    </div>
  </div>