如何设置包含模型的transcluded元素的有效性?

时间:2013-07-26 00:53:20

标签: angularjs angularjs-directive

我正在创建一个带有表单输入的指令,并使用任意HTML包装该输入。

所以这个:

<input ng-model="myModel" required>

变为:

<div>
  some markup here
  <input ng-model="myModel" required>
</div>

从我的指令中更新模型的有效性和价值的正确方法是什么?通常情况下,我需要ngModelController并致电$setValidity$setViewValue,但是,由于ng-model存在于我的被转换的元素上,而不是我的指令的顶级元素,所以我似乎可以'访问ngModelController

1 个答案:

答案 0 :(得分:0)

我在这些场景中所做的是让你的指令本身实现ngModelController

点击此页面上的“实施自定义表单控件(使用ngModel)”部分:http://docs.angularjs.org/guide/forms

另一个技巧,如果你有一个表单元素,如果$ error中有错误键,你可以获得ngModelController个实例:

  angular.forEach($scope.myForm.$error, function(o, name) {
        for (var i = 0; i < o.length; i++) {
            o[i].$setValidity(name, false);
        }
    });