angularjs - 无法访问 form.inputName.$dirty,其中 inputName 位于具有隔离范围的指令模板内

标签 angularjs angularjs-directive

我正在创建一个指令,该指令具有带有输入元素的模板。通常,当输入位于具有隔离范围的指令之外时,您可以访问 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/

相关文章:

javascript - Angularjs:图片无法加载

AngularJS URL 中的所有斜杠更改为 %2F

javascript - php服务器无法使用$.http().post请求从angularjs接收json变量

javascript - Angularjs - 调用子状态时防止再次加载非抽象父状态

javascript - 如何在 Angular JS 的特定范围之外访问我的数据?

javascript - 从指令获取元素样式 - 随机失败

angularjs - 测试 Angular 指令时出现 Karma 'Unexpected Request',即使使用 ng-html2js

javascript - 动态注入(inject)指令

javascript - AngularJs:将搜索条件从非常大的搜索表单传递到服务 - 创建自定义模型?

AngularJs 指令加载事件