【发布时间】:2014-06-17 13:09:22
【问题描述】:
标记:
<div class="vpScoreInner" ng-bind-html="reason | truncate:limit:20:" ...">
JS:
filter('truncate', function($sce){
return function(text, overall_limit, line_limit, end){
if (!text){
return;
}
var last_blank_index = 0;
var line_length = 0;
var overall_length = 0;
var processed = '';
var componenets = text.split(' ');
for (var i = 0; i < componenets.length; i++){
c = componenets[i];
if (overall_limit && overall_length + c.length >= overall_limit){
return $sce.trustAsHtml(processed + end);
}
if(line_length < line_limit){
processed = !!processed ? processed + ' ' + c : c;
line_length = line_length + c.length;
}
else{
processed = processed + '<br>'
line_length = 0
}
overall_length = overall_length + c.length;
}
return $sce.trustAsHtml(processed);
}
});
我实现的这个过滤器既可以根据需要截断文本,也可以将其拆分为不超过 x 个字符的行,而不会在中间截断单词。
问题是普通的 ng-bind
标签被渲染为纯文本,而使用相对较新的 ng-bind-html,文本根本不会被渲染。
【问题讨论】:
-
你在这里试过答案了吗:stackoverflow.com/questions/14726938/…