如何在ng-repeat -ed指令中使用$ compile?

时间:2017-04-17 18:00:31

标签: angularjs

我正在尝试根据范围参数动态添加几个指令。我已经成功了,但没有用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

为什么会发生这种情况?我该如何处理这个问题?

0 个答案:

没有答案