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



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

jsfiddle.net/6HcGS/396

有人可以帮助我吗?

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

数据绑定自定义指令 Angular 与替换编译函数中的 HTML

<input zippy ng-model="title">

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

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

默认优先级为 0。优先级较高的指令首先呈现。

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

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

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

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

就像贝克特说的,设置priority: -1

演示小提琴

最新更新