在ng-repeat中剪切对象参数的字符串长度

时间:2016-03-24 22:13:26

标签: javascript html angularjs

我有一个对象列表,其中包含使用ng-repeat在表格中显示的所有参数。

有时,对象的Title参数会很长,因此会使表格在某些位置拉伸。我尝试过使用过滤器,但我认为会切断表中显示的行,而不是随机对象参数的字符。

有没有办法可以将此标题截断到一定长度并添加" ..."在末尾?如果之前有人问过,但我的研究没有找到我需要的答案,请道歉。

1 个答案:

答案 0 :(得分:1)

您可以编写一个javascript函数来强制文本的最大长度:

$scope.forceMaxLength = function(s, maxLength) {
     if(s.length > maxLength) {
         return Array.prototype.slice.apply(s, [0, maxLength-3]).join('') + '...';
     } else {
         return s;
     }
}

现在您可以在角度模板中使用它:

   <div ng-repeat="item in items">
        <h3>{{ forceMaxLength(item.title, 25) }}</h3>
   </div>

话虽如此,在你的CSS中使用text-overflow: ellipsis;可能是一个更好的解决方案。

原因是文本的宽度由每个字符宽度的总和组成,字符宽度可以变化。

这两个字符串都有三十四个字符:

  

iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii

     

MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM

如果你想截断这些字符串使它们适合给定的宽度,你可能希望截断点位于相应字符串中的不同位置。