angular在编译中使用自定义模板访问指令中的ngModel控制器

时间:2013-10-26 10:59:45

标签: angularjs directive

我想访问ngModel控制器(以后使用setValidity来验证自定义输入字段)。但是,当我想将该指令用作属性(而不是类)时,replaceWith函数会抛出一个错误,它无法找到ngModel控制器。我在这里创造了一个小提琴:

jsfiddle.net/6HcGS/396

有人可以帮帮我吗?

这与我的第一个问题有关:

databinding custom directive angular with replacing html in compile function

2 个答案:

答案 0 :(得分:2)

<input zippy ng-model="title">

zippy和ngModel都是以特定顺序呈现的指令。在这种情况下,zippy会在ngModel之前呈现。您可以像Maxim Shoustin建议的那样重新排序指令,也可以通过在指令创建函数上提供priority属性来指定渲染顺序,如下所示:

  .directive('zippy', function($compile){
    return {
      restrict: 'A',
      priority: -1,
      replace: true,
      ...

默认优先级为0.首先渲染具有较高优先级的指令。

答案 1 :(得分:1)

相反

<input zippy ng-model="title"/>

尝试在ng-model之后编写属性,如:

 <input  ng-model="title" zippy/>

您有兴趣在zippy指令之前加载ng-model

像bekite所说,设置priority: -1

演示 Fiddle