我想访问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
演示小提琴