我有一个对象列表,其中包含使用ng-repeat在表格中显示的所有参数。
有时,对象的Title参数会很长,因此会使表格在某些位置拉伸。我尝试过使用过滤器,但我认为会切断表中显示的行,而不是随机对象参数的字符。
有没有办法可以将此标题截断到一定长度并添加" ..."在末尾?如果之前有人问过,但我的研究没有找到我需要的答案,请道歉。
答案 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
如果你想截断这些字符串使它们适合给定的宽度,你可能希望截断点位于相应字符串中的不同位置。