AngularJS: Tronque multi-ligne HTML lié dans ng-repeat / ng-bind-html

J'ai suivi ng-repeat

<div class="item-post" ng-repeat="item in items"> <div class="item-content" ng-bind-html="item.text"></div> </div> 

Où item.text est un texte HTML multi-lignes et il s'affiche correctement, mais je dois le tronquer à la hauteur maximale de l'article-poste div (250px). Ensuite, ajoutez trois points indiquant que ce texte est plus long.

Je voulais utiliser jquery.autoellipsis qui fonctionne par exemple sur div avec du contenu statique.

Pour AngularJS, j'ai trouvé des ellipses angulaires , mais ne fonctionne pas avec HTML, seulement du texte brut. Je dois l'atteindre sur le contenu HTML.

Merci d'avance pour votre aide!

EDIT / SOLUTION:

Enfin, j'ai pu utiliser le plugin jquery.autoellipsis en utilisant une directive personnalisée (basée sur la réponse d'asgoth):

 myDirectives.directive('htmlEllipsis', ['$timeout', function($timeout) { return { restrict: 'A', link: function(scope, element, attrs) { $timeout(function() { angular.element(element).ellipsis(); }, 0); } }; }]); 

Et en vue partielle:

 <div class="item-post" ng-repeat="item in items"> <div class="item-content" ng-bind-html="item.text" html-ellipsis></div> </div> 

EDIT2:

La directive de la réponse d'asgoth après son édition fonctionne bien, en utilisant une autre approche que la directive susmentionnée.

Si j'étais vous, je ferais une directive pour utiliser le plugin jquery (jquery.autoellipsis):

 angular.module('myModule').directive('ellipsis', [function () { return { required: 'ngBindHtml', restrict: 'A', priority: 100, link: function ($scope, element, attrs, ctrl) { $scope.hasEllipsis = false; $scope.$watch(element.html(), function(value) { if (!$scope.hasEllipsis) { // apply ellipsis only one $scope.hasEllipsis = true; element.ellipsis(); } }); } }; }]); 

Votre html est alors:

 <div class="item-content" ng-bind-html="item.text" ellipsis></div> 

Bien sûr, vous devez inclure le plugin jquery dans une étiquette de script .

EDIT : J'ai édité la réponse, alors la directive surveillera le changement html (fait par ngBindHtml).

Semblable à la réponse acceptée, cette alternative permet une personnalisation améliorée: https://github.com/dibari/angular-ellipsis