2016-02-10 3 views
0

Я пытаюсь получить строку, которую я могу редактировать позже (с помощью Textangular или сохранить ее в БД) из шаблона, исходящего с сервера (в БД).AngularJs - Получить строку из скомпилированного HTML/Variable

TemplateMailService.get($scope.type, function (data, status) { 


      $scope.template = data.template; 
      // data.template.content = '<p>Hi <span ng-if="client.email == '[email protected]'">{{email}}</span>!</p>' 
      $timeout(function() { 

       data.template.content = $compile(data.template.content)($scope); 

       $log.debug('$scope.mail.content : ', $scope.mail.content); 
       $log.debug('data.template.content : ', angular.element(data.template.content)); 
       // is compiled correctly. I can see the ng-if apply and the {{variable}} compiled 
       var string = ''; 
       string += data.template.content[0].innerHTML; 

       console.log(string); 
       // => ng-if not apply and {{variable}} not compiled... 

       $scope.mail.content = string; 
      }, 0); 

    }) 

Я хочу, чтобы иметь возможность сохранить скомпилированный шаблон (со всеми нг-хх и {{переменные}} применяется в строке, чтобы изменить его в textangular.

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

То, что я здесь отсутствует?

Спасибо.

ответ

0

$parse

$parse можно использовать для оценки одиночных выражений, подобных любому {{variable}}, который у вас есть в вашей строке data.template.content[0].innerHTML;.

$interpolate

Я думаю, что это решение, чтобы получить скомпилированную строку, потому что $interpolate знает, как обрабатывать строку с выражениями, как <p ng-if='myObject'>Hello {{myName}}</p>

+0

Даже если я обернуть скомпилированный шаблон в $ sce.trustAsHtml это еще возвращенный uncompiled ... и ngSanitize уже добавлен в мой проект. Я не хочу отображать строку, я просто хочу, чтобы иметь возможность манипулировать ею после компиляции. – Yousphere

+0

Вы пробовали https://docs.angularjs.org/api/ng/service/$interpolate –