3

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

jsfiddle.net/6HcGS/396

有人可以帮帮我吗?

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

数据绑定自定义指令角度,在编译函数中替换 html

4

2 回答 2

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。优先级较高的指令首先呈现。

于 2013-10-26T13:20:39.980 回答
1

反而

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

尝试在ng-model喜欢之后写属性:

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

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

就像 bekite 说的,设置priority: -1

演示Fiddle

于 2013-10-26T11:41:24.990 回答