在ng重复中剪切对象参数的字符串长度

cut string length of object parameter in ng-repeat

本文关键字:参数 字符串 对象 ng      更新时间:2023-09-26

我有一个对象列表,其中所有参数都使用ng repeat显示在表中。

有时,对象的"标题"参数会很长,因此会使表在某些位置拉伸。我尝试过使用filter,但我认为这会截断表中显示的行,而不是随机对象参数的字符。

有没有办法把这个标题缩短到一定的长度,然后在结尾加上"…"?如果之前有人问过这个问题,我很抱歉,但我的研究没有找到我需要的答案。

您可以编写一个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;可能是一个更好的解决方案。

原因是文本的宽度由每个字符的宽度之和组成,并且字符宽度可能会有所不同。

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

iiiiiiiiii

mmmmmmmmmm

如果您想截断这些字符串,使其适合给定的宽度,您会希望截断点位于相应字符串中的不同位置。