我有一段代码,其中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;
}
})
答案 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>