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

标签 javascript html angularjs

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

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

有没有办法可以将这个标题 chop 到一定长度并在末尾添加“...”?如果之前有人问过这个问题,我深表歉意,但我的研究没有找到我需要的答案。

最佳答案

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

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

现在你可以在你的 Angular 模板中使用它:

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

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

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

这两个字符串都有 34 个字符:

iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii

MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM

如果您想 chop 这些字符串以使它们适合给定的宽度,您可能希望 chop 点位于各个字符串中的不同位置。

关于javascript - 剪切 ng-repeat 中对象参数的字符串长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36210902/

相关文章:

html - DIV 未调整为文本高度。为什么?

javascript - 使用 JQuery,如何区分同一元素上的一次点击和下一次点击?

javascript - 这个可重用的 AngularJS 服务如何在 mousemove 上更新?

javascript - 如何为 Angular Material 的 "md-menu"设置预定偏移量?

angularjs - Angular 2 中接口(interface)的命名约定是什么?

javascript - 为什么 url 编码域后的第一个斜杠会破坏 url?

当正则表达式与测试字符串匹配时,Javascript .test 要么不返回任何内容,要么不返回 false?

javascript - 从 HTML 字符串中解析所有 URL 的最佳方法是什么?

javascript - Object.create() 混淆 - 如何访问/销毁对象?

javascript - 将图片拟合到div中