2014-09-14 3 views
2

Я использую плагин электронной почты cordova, который работает, когда я отправляю простой текст.Как отправить HTML-письмо с помощью Agularjs?

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

$scope.openShare = function (title,body) { 
    var templateURL = "templates/roi-email.html"; 
    $http.get(templateURL).success(function(data, status, headers, config) { 
      var templateRendered = $compile(data)($scope); 

      if(window.plugins && window.plugins.emailComposer) { 
         window.plugins.emailComposer.showEmailComposerWithCallback(function(result) { 
        console.log("Response -> " + result); 
       }, 
       title, // Subject 
       templateRendered,      // Body 
       [], // To 
       null,     // CC 
       null,     // BCC 
       true,     // isHTML 
       null,     // Attachments 
       null);     // Attachment Data 
      } 

Однако templateRendered не строковый объект. Я думаю, что это объект просмотра мг.

Так как же скрывать необработанный html в «данных» с визуализированной строкой, т. Е. TemplateRendered, чтобы перейти к составителю электронной почты?

ответ

4

Используйте угловой элемент и не забудьте, чтобы вызвать $ применять на используемом объеме:

http://jsfiddle.net/coma/o63wvscn/

app.controller('Main', function($scope, $compile, $timeout) { 

    var scope = angular.extend($scope.$new(), { 
     user: { 
      email: '[email protected]' 
     } 
    }); 

    var email = angular.element('<div><p>{{ user.email }}</p></div>'); 
    $compile(email)(scope); 

    scope.$apply(); 
    alert(email.html()); 
}); 
1

$compile возвращает элемент DOM; не строка. Таким образом, вы можете получить доступ к templateRendered.html() (jQuery), чтобы получить контент. Однако, как the doc говорит:

После связывания вида не обновляются до тех пор, после вызова $ переваривать , который обычно делается с помощью Угловой автоматически.

Для того,

увидеть рабочий пример: http://plnkr.co/edit/cYsS1c7GbEVRP7RODHvx?p=preview

+0

Неа, как вы можете видеть здесь https://docs.angularjs.org/api/ng/function/angular.element, метод HTML уже включен в jqLite, нет необходимо добавить любой jQuery. Кстати, рассмотрите возможность использования новой области, чтобы избежать загрязнения. – coma

Смежные вопросы