我正在尝试根据范围参数动态添加几个指令。我已经成功了,但没有用ng-repeat。如果我将设置指令的优先级> 1000(ng-repeat的优先级),数据将正确显示,但没有我的附加指令。如果我将它设置为< 999,它将添加我的指令,但将分别对集合中的每个值执行ng-repeat,基本上多次复制所有数据。
这就是我这样做的方式:
app.directive('testDirectiveLow', function ($compile) {
return {
restrict: 'A',
replace: false,
terminal: true,
priority: 999,
scope: {
tooltip: '<'
},
compile: function compile(element, attrs) {
return {
post: function postLink(scope, iElement, iAttrs, controller) {
console.log(scope.tooltip);
if (scope.tooltip) {
iElement.attr('uib-tooltip', 'Test tooltip');
iElement.attr('tooltip-placement', 'right');
}
iElement.removeAttr("test-directive-low");
$compile(iElement)(scope.$parent);
}
};
}
};
});
我也做了一个能够证明这个问题的人。它显示了我如何根据“工具提示”属性动态添加工具提示。首先,它展示了它如何用于静态元素,然后用于具有高优先级的指令,然后用于低优先级: http://plnkr.co/edit/6D397kPjP1W2OtOeC01J?p=preview
为什么会发生这种情况?我该如何处理这个问题?