Подтвердить что ты не робот

Получите исходный транскодированный контент в директиве Angular

Можно ли программно получить исходный транслируемый контент в директиве Angular.js?

Я пытаюсь создать директиву editable, которая может быть добавлена ​​в любой div, позволяя пользователю редактировать содержимое HTML с помощью настраиваемых директив angular. (Цель проекта состоит в том, чтобы избежать необходимости добавлять бесконечные возможности графического интерфейса в приложении, поскольку пользователи могут просто редактировать HTML...), например:

 <div editable>
      <h1>Lorem Ipsem</h1>
      <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit...</p>
      <clock>A custom directive</clock>
 </div>

См. этот Plunker в качестве примера (http://plnkr.co/edit/nIrr9Lu0PZN2PdnhQOC6?p=preview):

  • Нажмите значок редактирования на сплошной серой полосе, чтобы открыть редактор
  • Введите в любой хорошо сформированный HTML с тегами: (например, <h1>A title</h1><p>some content</p><clock></clock>)
  • Нажмите "Применить"

Что мне сейчас нравится:

  • Он может быть добавлен в любой div
  • Он может включать вложенные пользовательские директивы, используя $compile
  • Он включает транслируемый контент

Что я еще не могу понять:

  • Как получить исходный транскодированный контент для инициализации текстового поля

Внутри функции компиляции $transclude, кажется, содержит шаблон для mydirective, а с помощью функции контроллера $transclude содержит посткомпилированный контент после того, как все было изменено, выведенные директивы и т.д.

4b9b3361

Ответ 1

Вы можете использовать функцию transclude:

.directive('editable', function() {
    return {
       transclude: true,
       link: function(scope, element, attrs, ctrl, transclude) {
           transclude(scope, function(clone) {
               // clone is your transluded content
           });
       }
    };
});