Angularjs 无法访问form.inputName.$dirty,其中inputName位于具有隔离作用域的指令模板内

Angularjs 无法访问form.inputName.$dirty,其中inputName位于具有隔离作用域的指令模板内,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我正在创建一个指令,它有一个带有输入元素的模板。通常,当输入超出具有隔离作用域的指令时,您可以访问formName.inputName.$dirty。但是,当您将它放在具有隔离作用域的指令中时,我无法访问外部表单。即使我可以访问它,我也不认为表单上可以访问inputName输入控件。我需要查看输入控件上的$dirty、$invalid标志,并使它们的ng invalid和ng dirty类名可用。有什么办法可以这样做吗 一个显示我正在做的事情的大纲的砰砰声是 更多信息:我可以在$scope.$p

我正在创建一个指令,它有一个带有输入元素的模板。通常,当输入超出具有隔离作用域的指令时,您可以访问formName.inputName.$dirty。但是,当您将它放在具有隔离作用域的指令中时,我无法访问外部表单。即使我可以访问它,我也不认为表单上可以访问inputName输入控件。我需要查看输入控件上的$dirty、$invalid标志,并使它们的ng invalid和ng dirty类名可用。有什么办法可以这样做吗

一个显示我正在做的事情的大纲的砰砰声是


更多信息:我可以在$scope.$parent上找到表单,但其中有一个{{inputName}}字段,而不是inputName的值。

首先,从隔离作用域访问
作用域。$parent
不是一个好主意

如果您只想将其用于验证,并且仅在指令模板内局部使用(即在隔离范围的上下文中),则可以使用,从角度来看,它具有与
表单
相同的功能,但不受
表单
的限制(例如,它可以嵌套)

更改简单输入模板,如下所示:

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}}"
    ...
div class=“form row”ng form=“simpleInputForm”
ng class=“{'error”:inputBlur&&!isActive(inputName)&&
simpleInputForm.simpleInput.$dirty&&
simpleInputForm.simpleInput.$invalid}“>
...

不幸的是,我需要从指令外部访问输入元素,所以您的解决方案对我不起作用。我也愿意使用其他方法来实现这一点,而不必使用scope.$parent。因此,如果我在简单输入元素上添加name属性,然后将name传递给指令中的输入控件,那么您的解决方案将起作用。基本上,您甚至不必将名称传递给指令。只需在
上设置名称即可: