如何限制AngularJS中<td>条目中显示的字符[重复]

Posted

技术标签:

【中文标题】如何限制AngularJS中<td>条目中显示的字符[重复]【英文标题】:How to limit the characters displayed in a <td> entry in AngularJS [duplicate] 【发布时间】:2015-04-15 00:23:46 【问题描述】:

我有一张表格,我想知道如何限制 &lt;td&gt; 条目中显示的字符数,以便如果超过限制,则显示“...”,可能允许用户单击它让它扩展。

<table st-table="displayedCollection" st-safe-src="main.quizCollection" class="table table-striped table-condensed table-bordered" ng-show="main.tab === 'active'">
        <thead>
            <tr>
                <th st-sort="Internal.quizName">Name</th>
                <th st-sort="Internal.description">Description</th>
                <th st-sort="Internal.dateCreated">Date Created</th>
                <th st-sort="Internal.timesTaken">Times Taken</th>
                <th>URL</th>
                <th>View More</th>
                <th>Copy</th>
                <th>Export</th>
                <th>Deactivate</th>
            </tr>
        </thead>
        <tbody>
            <tr ng-repeat="quiz in displayedCollection | filter:'active': true">
                <td>quiz.Internal.quizName</td>
                <td>quiz.Internal.description</td>
                <td>quiz.Internal.dateCreated</td>
                <td>quiz.Internal.timesTaken</td>
                <td><button class="btn btn-default" clip-copy="main.copyURL(quiz)"><i class="fa fa-share-square-o"></i></button></td>
                <td><a href="#/view-more/quiz.$id" class="btn btn-info"><i class="fa fa-eye"></i></a></td>
                <td><a href="#/copy/quiz.$id" class="btn btn-default"><i class="fa fa-clipboard"></i></a></td>
                <td><button class="btn btn-default" ng-csv="main.export(quiz)" csv-header="main.csvHeader" lazy-load="true" filename="quiz.Internal.quizName.csv"><i class="fa fa-floppy-o"></i></button></td>
                <td><button class="btn btn-danger" ng-click="main.deactivate(quiz)"><i class="fa fa-ban"></i></button></td>
            </tr>
        </tbody>
    </table>

我正在使用 ng-smart-table。另一种解决方案是,如果&lt;td&gt; 太长,那么列会变高但不会变宽。

【问题讨论】:

Angular 有一个内置的过滤器'limitTo',它可以做到这一点,非常容易使用。 docs.angularjs.org/api/ng/filter/limitTo 【参考方案1】:

在我看来是 AngularJS 的完美应用Filters

用法类似于:

<td>quiz.Internal.quizName | limitChars:20</td>

【讨论】:

好的,我使用了它,但是如果我想要添加“...”的功能并能够单击它以查看被截断的其余部分怎么办? 您将无法使用过滤器获得所需的点击行为。我相信你现在处于 AngularJS 指令领域。 如何在 Angular 4 中做到这一点? 我用切片解决了。谢谢。【参考方案2】:

您可以在 CSS 中执行此操作。设置列的max-width,同时应用text-overflow: ellipsis。例如:

<td class="ellipsis">quiz.Internal.description</td>

在你的 CSS 中:

.ellipsis 
    max-width: 40px;
    text-overflow: ellipsis;
    overflow: hidden;
    white-space: nowrap;

(请参阅this answer 了解更多信息)

【讨论】:

不适用于tds。 我编辑了答案以包含所需的 CSS 行 max-widthtds 解决了问题。 width 不起作用。

以上是关于如何限制AngularJS中<td>条目中显示的字符[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何从 AngularJS 范围内的数组中删除项目?

如何将 <td> 限制为三行?

10AngularJS SQL

angularJs 表格

如何使用 angularjs 或 jQuery 更改 HTML 表格中的文本颜色?

AngularJS table