我正在创建一个指令,该指令具有带有输入元素的模板。通常,当输入位于具有隔离范围的指令之外时,您可以访问 formName.inputName.$dirty。但是,当您将其放入具有隔离范围的指令内时,我无法访问外部表单。即使我可以访问它,我也不认为 inputName 输入控件可以在表单上访问。我需要查看输入控件上的 $dirty、$invalid 标志,并获取它们的 ng-invalid 和 ng-dirty 类名。有办法做到这一点吗?
显示我正在做的事情的轮廓的一个大纲是 here .
更多信息:我可以在 $scope.$parent 上找到该表单,但其中有一个 {{inputName}} 字段,而不是 inputName 的值。
最佳答案
首先,从隔离范围访问 scope.$parent
并不是一个好主意。
如果您只想将其用于验证并且仅在指令模板内本地使用(即在隔离范围的上下文中),则可以使用 ngForm
,从 Angular Angular 来看,它与 form
具有相同的功能,但不受 form
的限制(例如可以嵌套)。
像这样更改简单输入模板:
div class="form-row" ng-form="simpleInputForm"
ng-class="{'error':inputBlur && !isActive(inputName) &&
simpleInputForm.simpleInput.$dirty &&
simpleInputForm.simpleInput.$invalid}">
...
<input type="text" name="simpleInput" id="{{inputName}}"
...
另请参阅此 short demo 。
关于angularjs - 无法访问 form.inputName.$dirty,其中 inputName 位于具有隔离范围的指令模板内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23747560/