Bonjour à vous,

Je poste car j'ai un petit soucis avec une application que je développe. En effet, cette application a pour but de regrouper des articles rédigés en html, et certains contiennent des vidéos youtube ou dailymotion sous forme d'embed. J'utilise donc l'attribut ng-bind-html="article.content" pour récupérer le contenu de l'article, mais les vidéos ne s'affichent pas dedans.

Pour tenter de remédier à cela j'utilise le package ngSanitize par l'intermédiaire d'un filtre créée, ainsi qu'un autre filtre pour rendre les urls cliquables dans l'application (selon des attributs sur les liens dans le contenu html).

Les liens marchent bien, mais les vidéos ne s'affichent toujours pas et je n'ai aucune erreur =/

angular.module('app', ['ionic', 'ionic.cloud', 'satellizer', 'permission', 'ngMessages', 'fusionMessages', 'chart.js', 'ngCordova', 'ngSanitize'])
.filter('sanitizer', ['$sce', function($sce) {
    return function(content) {
      return $sce.trustAsHtml(content);
    };
  }])
  .filter('clicker', ['$state', function($state) {
    return function(content) {

      $('#clicker-content, #article-content').on('click', 'a', function(e) {
        e.preventDefault();
        if( typeof $(this).attr('ui-sref') != 'undefined' ) {

          var id = $(this).attr('data-id');
          var route = $(this).attr('data-route');
          var param = $(this).attr('data-param');

          if( typeof route != 'undefined' && typeof param != 'undefined' && typeof id != 'undefined' ) {
            var routeParams = {};
            routeParams[param] = id;

            $state.go(route, routeParams);

          } else {
            $state.go($(this).attr('ui-sref'));
          }
        } else {
           window.open($(this).attr('href'), '_system', 'location=yes');
        }
      });

      return content;
    }
  }])

Voici comment je procède dans le template html :

<p class="article-content" id="article-content" ng-bind-html="article.content | clicker | sanitizer"></p>

Si quelqu'un a déjà eu ce cas de figure, ou a une idée sur comment résoudre le problème, je suis preneur =)

Aucune réponse