Добавить директиву изнутри другой директивы в angularjs

Добавление директивы изнутри другой директивы, заставляет браузер зависать.

Что я пытаюсь сделать, это

1) Измените директиву пользовательского элемента (например,<h7></h7>) внутри функции компиляции. При этом браузер зависает.

код:

<h7>TEST</h7>
    animateAppModule.directive('h7', function($compile){
        return {
            restrict:"E",
            compile:function(tElement, tAttrs, transclude){                
                tElement[0].setAttribute("ng-class", "{selected:istrue}");
                return function(scope, iElement, iAttrs){
                    //$compile(iElement)(scope);
                }
            }
        }
    })

Если я раскомментирую эту строку//$compile(iElement)(scope);, браузер зависает. Вы можете раскомментировать вышеуказанную строку в этой скрипкеhttp://jsfiddle.net/NzgZz/3/ чтобы увидеть браузер висит.

Однако зависание браузера не происходит, если у меня есть свойство шаблона вh7 директива, как показано в этой скрипке.http://jsfiddle.net/KaGRt/1/.

В целом то, что я пытаюсь достичь, это

Я хочу дополнить шаблон новыми функциями с помощью отдельных директив. Что-то вроде шаблона декоратора. Я делаю это внутри функции компиляции директивы, которая находится в цепочке директив, чтобы она влияла на все экземпляры этого шаблона.

Псевдо пример того, чего я пытаюсь добиться.

<xmastree addBaloon addSanta></xmastree>

1) Скажем, у xmastree есть шаблон -<div class="xmastree" ng-class={blinks:isBlinking}></div>

2) СкажиaddBaloon имеет шаблон<div class="ballon" ng-class={inflated:isinflated}></div> Затем,addBaloon Функция компиляции должна увеличить шаблон с шага 1 до чего-то вроде этого

<div class="xmastree" ng-class={blinks:isBlinking}>
    <div ng-repeat = "ballon in ballons">
        <div class="ballon" ng-class={inflated:isinflated}></div>
    </div>
</div>

3) СкажиaddSanta имеет шаблон<div class="santa" ng-class={fat:isFat}></div> Затем,addSanta Функция компиляции должна увеличивать шаблон с шага 2 до чего-то вроде этого

<div class="xmastree" ng-class={blinks:isBlinking}>
    <div ng-repeat = "ballon in ballons">
        <div class="ballon" ng-class={inflated:isinflated}></div>
    </div>
    <div ng-repeat = "santa in santas">
        <div class="santa" ng-class={fat:isFat}></div>
    </div>
</div>

После всей компиляции, если я запускаю шаблон, полученный из шага 3, для области с подходящими свойствами, я должен иметь возможность получить HTML.

Ответы на вопрос(1)

Ваш ответ на вопрос