我有以下内容:
<div>{{modal.title}}</div>
有没有办法将字符串长度限制在20个字符以内?
更好的问题是,如果字符串超过20个字符,有没有办法将其截断并显示...
?
我有以下内容:
<div>{{modal.title}}</div>
有没有办法将字符串长度限制在20个字符以内?
更好的问题是,如果字符串超过20个字符,有没有办法将其截断并显示...
?
这是一个简单的一行代码修复方案,不需要使用CSS。
{{ myString | limitTo: 20 }}{{myString.length > 20 ? '...' : ''}}
'…'
替代 '...'
。 - Tom Harrison编辑
最新版本的AngularJS
提供limitTo
过滤器。
您需要像这样的自定义过滤器:
angular.module('ng').filter('cut', function () {
return function (value, wordwise, max, tail) {
if (!value) return '';
max = parseInt(max, 10);
if (!max) return value;
if (value.length <= max) return value;
value = value.substr(0, max);
if (wordwise) {
var lastspace = value.lastIndexOf(' ');
if (lastspace !== -1) {
//Also remove . and , so its gives a cleaner result.
if (value.charAt(lastspace-1) === '.' || value.charAt(lastspace-1) === ',') {
lastspace = lastspace - 1;
}
value = value.substr(0, lastspace);
}
}
return value + (tail || ' …');
};
});
{{some_text | cut:true:100:' ...'}}
另一种解决方案:http://ngmodules.org/modules/angularjs-truncate(作者:@Ehvince)
filterTo
,使字符串在位置限制后第一个空格处截断?这样它就不会在单词中间分割。 - Elloneif (value.charAt(lastspace-1) == '.' || value.charAt(lastspace-1) == ',') { lastspace = lastspace - 1; }
- JDDelgado我知道现在有些晚了,但在最新版本的angularjs中(我使用的是1.2.16),limitTo过滤器支持字符串和数组,所以你可以像这样限制字符串长度:
{{ "My String Is Too Long" | limitTo: 9 }}
这将输出:
My String
您只需将CSS类添加到div中,然后通过angularjs添加工具提示,这样在鼠标悬停时就可以看到修剪后的文本。
<div class="trim-info" tooltip="{{modal.title}}">{{modal.title}}</div>
.trim-info {
max-width: 50px;
display: inline-block;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
line-height: 15px;
position: relative;
}
我曾经遇到过类似的问题,这是我所做的:
{{ longString | limitTo: 20 }} {{longString.length < 20 ? '' : '...'}}
< div >{{modal.title | limitTo:20}}...< / div>
更优雅的解决方案:
HTML:
<html ng-app="phoneCat">
<body>
{{ "AngularJS string limit example" | strLimit: 20 }}
</body>
</html>
Angular 代码:
var phoneCat = angular.module('phoneCat', []);
phoneCat.filter('strLimit', ['$filter', function($filter) {
return function(input, limit) {
if (! input) return;
if (input.length <= limit) {
return input;
}
return $filter('limitTo')(input, limit) + '...';
};
}]);
示例:
http://code-chunk.com/chunks/547bfb3f15aa1/str-limit-implementation-for-angularjs
input
值是动态的情况下添加一个return吗?即,if(!input){return;}
否则会出现JS控制台错误。 - mcranston18由于我们只需要在字符串长度超过限制时才使用省略号,因此使用ng-if
添加省略号似乎比绑定更为合适。
{{ longString | limitTo: 20 }}<span ng-if="longString.length > 20">…</span>
我发现最简单的方法来简单限制字符串长度是使用{{ modal.title | slice:0:20 }}
,然后借鉴@Govan的方法,如果字符串超过20个字符,可以使用{{ modal.title.length > 20 ? '...' : ''}}
添加省略号,最终结果就是:
{{ modal.title | slice:0:20 }}{{ modal.title.length > 20 ? '...' : ''}}
https://angular.io/docs/ts/latest/api/common/index/SlicePipe-pipe.html
这里有一个选项。
.text {
max-width: 140px;
white-space: nowrap;
overflow: hidden;
padding: 5px;
text-overflow: ellipsis;(...)
}
<div class="text">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Excepturi qui soluta labore! Facere nisi aperiam sequi dolores voluptatum delectus vel vero animi, commodi harum molestias deleniti, quasi nesciunt. Distinctio veniam minus ut vero rerum debitis placeat veritatis doloremque laborum optio, nemo quibusdam ad, sed cum quas maxime hic enim sint at quos cupiditate qui eius quam tempora. Ab sint in sunt consequuntur assumenda ratione voluptates dicta dolor aliquid at esse quaerat ea, veritatis reiciendis, labore repellendus rem optio debitis illum! Eos dignissimos, atque possimus, voluptatibus similique error. Perferendis error doloribus harum enim dolorem, suscipit unde vel, totam in quia mollitia.</div>