我的模板中有说明
<p>{{data.description}}</p>
我想将这个描述修剪为某个单词编号,比如前20个单词。我见过很多过滤器,但它们修剪成某个特征。在大多数情况下,这会导致最后一个词破裂。
答案 0 :(得分:5)
您需要使用空格将描述字符串拆分为单词,然后对其进行计数:
app.filter('words', function () {
return function (input, words) {
if (isNaN(words)) {
return input;
}
if (words <= 0) {
return '';
}
if (input) {
var inputWords = input.split(/\s+/);
if (inputWords.length > words) {
input = inputWords.slice(0, words).join(' ') + '\u2026';
}
}
return input;
};
});
首先,我检查参数是否为数字,然后我检查描述是否比我们要修剪的更长,然后我修剪其余部分。
并在视图中:
{{data.description | words:250}}
答案 1 :(得分:0)
更清洁的解决方案是这样的:
<span>{{((longStringArray = longString.split(' ')) | limitTo: wordLimit = 20).join(' ')}}</span>
<span ng-if="longStringArray.length > wordLimit"> ...</span>
这甚至显示&#39; ...&#39;最后,表示缩短了给定的字符串。
答案 2 :(得分:0)
//Manish Bhardwaj
var regex = /\s+/gi;
//for count the words.
var count = (data.description).trim().replace(regex,' ').split(' ').length;
// for split all string data in array form
$scope.substr = (data.description).trim().replace(regex,' ').split(' ');
//make substring with space which is trimmed.
$scope.substr1 = $scope.substr.slice(0,20).join(' ');
$scope.substr2 = $scope.substr.slice(20,40).join(' ');
$scope.substr3 = $scope.substr.slice(40,$scope.substr.length).join(' ');