У меня есть ситуация, когда я получаю необработанный HTML-код от вызова http в моем контроллере.Затем я хочу отправить эти необработанные HTML-данные в мое представление в angularjs.Однако это по умолчанию блокируется модулем AngularJs ngSantize, поскольку html-данные могут быть вредоносными.
Поэтому я включил модуль ngSanitize в ядро моего приложения и использую метод $ sce.trustAs для отправки моего html в представление.Это, однако, работает только частично.Я получаю теги подчеркивания, полужирного шрифта и нижнего индекса, которые работают, но теги таблицы полностью опущены.Поэтому мне интересно, сделал ли я что-то не так или это нельзя сделать.
Сначала я включаю модуль ngSanitize:
(function() {
'use strict';
angular
.module('app.core', [
/* Angular modules */
'ngAnimate',
'ngSanitize',
/* Cross-app modules */
'blocks.exception',
'blocks.logger',
'blocks.router',
'blocks.filter',
/* Cross-app service modules */
'services.dateservice',
'services.textservice',
'services.sharepointservice',
'services.applicationinsightsservice',
'services.menuservice',
/* 3rd-party modules */
'AdalAngular',
'ui.router',
'restangular',
'angular-loading-bar',
'angular.filter',
'ui.bootstrap',
'ui.select',
'ngStorage',
'ct.ui.router.extras',
'ct.ui.router.extras.core',
'pascalprecht.translate',
// 'ApplicationInsightsModule',
'ui.grid'
/* 'adf.widget.latestblogs',
'adf.widget.peoplesearch'*/
]);
})();
В моей конфигурации настроек у меня есть следующие белые / черные списки:
angular.module('app').config(function ($sceDelegateProvider) {
$sceDelegateProvider.resourceUrlWhitelist(['**']);
});
$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|chrome-extension|skype|callto|sip|tel):/);
HTML, который я отправляю
<p>Dit is een test voor de foto van ggd</p>
<p> </p>
<div class="canvasRteResponsiveTable">
<div class="tableWrapper">
<table title="Table">
<tbody>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>a</td>
<td>b</td>
<td>c</td>
</tr>
<tr>
<td>x</td>
<td>y</td>
<td>z</td>
</tr>
</tbody>
</table>
,
,
<p> </p>
<p>xcccxcxc<s> cx</s> c<strong> xc</strong> c <u>dc </u>d v © copyright</p>
<p> </p>
<p> </p>
В моем контроллере я использую следующий код для установки данных:
var cleanDataHtml = $sce.trustAs('html', cleanData);
console.log(cleanData);
vm.widget.rteContent = cleanDataHtml
И я связываю его вHTML-представление следующим образом:
<article ng-if="widget.oneInternalName === 'richText'" class="widget-small-spacer">
<p ng-bind-html="widget.rteContent"></p>
</article>
Мой HTML-рендеринга, как показано ниже.Показывает, что теги, выделенные жирным шрифтом и подчеркиванием, работают, но не таблицы ...
![enter image description here](https://i.stack.imgur.com/f4UWs.png)
Любая помощь будет принята с благодарностью.