如何从指令访问子ngModel?

tha*_*vin 8 angularjs angularjs-directive

就像在这个问题中一样,我希望.error在表单字段的父元素添加.control-groupscope.$invalid为true.

但是,对表单名称进行硬编码ng-class="{ error: formName.fieldModel.$invalid }"意味着我不能以不同的形式重用它,而且我不想在任何地方重复这个声明.

我认为看起来像这样的指令可以工作:

<div class="control-group" error-on="model1, model2">
  <input ng-model="model1">
  <input ng-model="model2">
</div>
Run Code Online (Sandbox Code Playgroud)

所以,当任model1model2无效,.control-group.error添加.

我的尝试在这里.在给定模型名称的情况下,是否可以从指令访问模型?

如果有更好的方法,我也很乐意听.

pko*_*rce 5

我不认为编写自定义指令对于这个用例是必要的,因为ng-form指令是为这些情况创建的.从指令的文档:

嵌套表单很有用,例如,如果需要确定控件子组的有效性.

以你的代码为例,我会写:

<div class="control-group" ng-class="{ error: myControlGroup1.$invalid }>
  <ng-form name="myControlGroup1">
    <input ng-model="model1">
    <input ng-model="model2">
  </ng-form>
</div>
Run Code Online (Sandbox Code Playgroud)

通过使用此技术,您不需要重复ng-model中使用的表达式,并且可以在任何形式内重用此片段.