Включение AngularJS с $compile

У меня есть директива атрибута, которую я использую, чтобы добавить некоторые 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
            };
        }
    ]
);

Обратите внимание на использование transclusion в шаблоне. Использование этой директивы как есть приводит к ошибке включения. Ошибка указывает на отсутствие transclude: true в определении директивы, но это довольно четко там. Если я изменю шаблон на что-то статичное, он будет работать так, как я и ожидал (без желаемого включения). Некоторые поиски привели меня к подозрению, что это как-то связано с тем, как $compile обрабатывает сферу, но я не получил намного дальше, чем в моем исследовании.

Почему transclusion не ведет себя здесь, и есть ли способ заставить его работать так, как нужно?

0 ответов

Другие вопросы по тегам