ng-messages を使用してカスタム検証を作成しました。たとえば、検証よりも大きい場合は次のとおりです。
(function (module) {
module.directive('greaterThanValidator', function () {
return {
require: ['ngModel'],
link: function (scope, element, attrs, ngModel) {
var data = attrs.greaterThanValidator;
ngModel.$validators.greaterThan = function (value) {
if (!isNaN(parseFloat(value)) && !isNaN(parseFloat(data))) {
value = parseFloat(value);
data = parseFloat(data);
}
if (!value || value.length == 0) {
element.$setValidity('greaterThan', true);
} else if (value>data) {
element.$setValidity('greaterThan', true);
} else {
element.$setValidity('greaterThan', false);
}
};
}
}
}
);
})(angular.module("lego.base"));
これは私のメッセージですdiv
:
<div class="error-messages" ng-if="..."
ng-messages="form.field.$error">
<div ng-message="greaterThan">Your value should be greater than {{number}}</div>
</div>
number
メッセージコンテンツに渡すにはどうすればよいですか?
Edit:
使い方は以下の通りです。
<input ng-model="something" greater-than-validator="100">