我想访问ngModel控制器(以后使用setValidity来验证自定义输入字段)。但是,当我想将该指令用作属性(而不是类)时,replaceWith函数会抛出一个错误,它无法找到ngModel控制器。我在这里创造了一个小提琴:
jsfiddle.net/6HcGS/396
有人可以帮帮我吗?
这与我的第一个问题有关:
databinding custom directive angular with replacing html in compile function
答案 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