Шаблон всегда компилируется со старым значением области в директиве

У меня есть директива, которая работает так:

http://jsfiddle.net/smithkl42/cwrgLd0L/23/

App.directive('prettify', ['$compile', function ($compile) {
    var templateFn;
    return {
        restrict: 'E',
        scope: {
            target: '='
        },
        link: function (scope, element, attrs) {
            if (!templateFn) {
                var template = element.html();
                templateFn = $compile(template);
            }
            scope.$watch('target', function (newVal, oldVal) {
                var compiled = templateFn(scope);
                element.html('');
                element.append(compiled);
                var html = element.html();
                var prettified = prettyPrintOne(html);
                element.html(prettified);
            }, true);
        }
    };
}]);

Проблема в том, что когда я компилирую шаблон, он всегда компилируется сстарый значениеtarget имущество. Таким образом, он начинает показывать это, то есть действует так, что заменить нечего:

Затем, если я добавлю символ к свойству, он показывает это, то естьпредыдущий значениеscope.organization.message имущество:

Отладка показывает, что значения вtarget свойства директивы области видимости верны на момент компиляции.

Что я делаю неправильно? Есть ли что-то в функции шаблона, возвращаемой$compile что смотрит на старые значения области? Или же...?

(Смотрите также этот вопрос, который привел к этому:Использование $ compile в директиве запускает бесконечную ошибку дайджеста AngularJS.)

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

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