带$ compile的AngularJS包含

时间:2018-08-06 21:20:28

标签: angularjs transclusion

我有一个属性指令,我正在使用该指令向元素添加一些ngRepeat逻辑。该指令的简化版本是:

app.directive(
    "repeaty",
    [
        "$compile",
        function repeaty(
            $compile
        ) {
            return {
                link: function link($scope, $element) {
                    $element.attr("ng-repeat", "item in [1,2,3,4,5]");

                    $element.removeAttr("data-repeaty");
                    $element.removeAttr("repeaty");

                    $compile($element)($scope);
                },
                priority: 1000,
                restrict: "A",
                template: "<ng-transclude/>",
                terminal: true,
                transclude: true
            };
        }
    ]
);

注意在模板中使用包含。按原样使用此伪指令将产生this transclusion error。该错误指向指令定义中缺少的transclude: true,但是很明显它在那里。如果我将模板更改为静态模板,则它可以按我期望的方式工作(不包含所需的包含)。某些搜索使我怀疑它与$compile如何处理范围有关,但是我的研究还远远不够。

为什么在这里不包含包容性,并且有一种方法可以使它按需要工作?

0 个答案:

没有答案