2014-11-30 14 views
6

Jak mogę ograniczyć liczbę znaków dla wyniku ng-bind-html w angularJS? Czy to możliwe?jak ograniczyć liczbę znaków w ng-bind-html w AngularJS?

Na przykład w pliku js znajduje się <span>some text </span>, a przy $sce i ng-bind-html przekształcamy w html.

Chcę pokazać som... Jak mogę to ograniczyć?

+0

[To] (http://stackoverflow.com/questions/27064319/angularjs-limitto-using-html-tags) jest twoja odpowiedź !!! nieźle!! –

Odpowiedz

4

Możesz użyć filtra limiTo w kontrolerze - limitTo fliter.

Kontroler:

app.controller('myCtrl', ['$scope','$sce','$filter', 
function($scope, $sce, $filter) { 
    var dataObj = [];   
    for(var i = 0; i < data.length; i++){ 
     console.log(data[i].Src) 

     // $filter('limitTo')(input, limit) 

     var content = $filter('limitTo')(data[i].Content, 150) 
     var itemObj = { 
      Content: $sce.trustAsHtml(content) 
     } 
     dataObj.push(itemObj); 
    } 
    $scope.ngRepeatArray = dataObj; 
}]) 

HTML

<ul> 
    <li ng-repeat="item in ngRepeatArray"> 
      <p ng-bind-html="item.Content"></p> 
    </li> 
</ul> 

Nadzieja to pomaga.

+0

$ filtr ('limitTo') (YOUR_DATA, YOUR_LIMIT) zmyślił .. – trainoasis

4

AngularJS limitTo using HTML tags

@Sericaia świetnie odpowiedź

Tworzy filtr niestandardowy tak:

angular.module('limitHtml', []) 
    .filter('limitHtml', function() { 
     return function(text, limit) { 

      var changedString = String(text).replace(/<[^>]+>/gm, ''); 
      var length = changedString.length; 

      return length > limit ? changedString.substr(0, limit - 1) : changedString; 
     } 
    }); 

A następnie wykorzystuje go w widoku:

<span ng-bind-html="text | limitHtml: maxNumberOfChar"></span> 
-1

Aby dodaj "czytaj więcej" lub "..." na końcu obciętego tekstu, dodałem sma Zmodyfikuj do @Yeysides's answer, rozszerzając @Sericaia's "AngularJS limitTo using HTML tags".

Użyj zmiennej z ciągiem suffix, a następnie wywołaj ją.

angular.module('limitHtml', []) 
    .filter('limitHtml', function() { 
     return function(text, limit) { 

      var changedString = String(text).replace(/<[^>]+>/gm, ''); 
      var length = changedString.length; 
      var suffix = ' ...'; 

      return length > limit ? changedString.substr(0, limit - 1) + suffix : changedString; 
     } 
    }); 

A następnie wykorzystuje go w widoku:

<span ng-bind-html="text | limitHtml: maxNumberOfChar"></span> 
+0

to nie działa – kabrice

+0

To działa dla AngularJS, nie Angular 2. Mam to przetestowane i wdrożone. Czy sprawdziłeś, czy filtr jest uruchamiany poprawnie? – mchebib

Powiązane problemy