AngularJS отправляет HTML из контроллера в View с не работающим $ sce - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть ситуация, когда я получаю необработанный 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 &copy; 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

Любая помощь будет принята с благодарностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...