【发布时间】:2014-08-13 03:16:56
【问题描述】:
我想使用 AngularJS 提供的内置表单验证。但是,在表单中,我使用了自定义指令,每个指令都有一个隔离范围。因此,表单元素无法访问绑定值。
知道如何解决这个问题吗?
或者,是否可以在不使用表单的情况下使用 AngularJS 验证?
ng-minlength 和 ng-required 指令不会触发表单验证。
<div ng-app="myApp" ng-controller="myCtrl">
<form name="myForm" novalidate>
<do-something ng-model="variable"></do-something>
<h4 data-ng-if="myForm.myElement.$error.required">Please enter something</h4>
<h4 data-ng-if="myForm.myElement.$error.greaterThanOne">Please enter a value greater than 1</h4>
<h4 data-ng-if="myForm.myElement.$error.minLength">Please enter something longer than 1 digit</h4>
{{myForm.myElement.$error}}
</form>
</div>
var app = angular.module('myApp', []);
app.controller('myCtrl', function ($scope) {
});
app.directive('doSomething', function () {
return {
restrict: 'E',
require: '?ngModel',
scope: {
model: '=ngModel'
},
template:
'<div>' +
' <input name="myElement" ng-model="model" ng-required ng-minlength="1" />' +
'</div>'
}
});
完整的 Plunk 可以在这里找到:这是一个演示问题的 plunkr:http://plnkr.co/edit/iWyvX2?p=preview
【问题讨论】:
-
您是否将值作为属性传递给您的指令?您应该能够将该特定值的范围设置为我认为的双向。我在这里做假设;发布小提琴。
-
我已经发布了一个 plunkr 来说明这个问题。我已将属性传递给指令。你能看出什么不对吗?
标签: javascript forms angularjs validation