2015-11-07 70 views
2

我有我的HTML字符串存储在我的数据库(我的新帖子的内容)。AngularJS摘录功能

我知道,打印这个网站在我看来,我可以用这个

<div ng-bind-html="post.content"></div> 

这是完全正常的,但让我们说,我想打印解析字符串的只有前20个characers。

有没有办法如何将“ng-bind-html”的返回值和刚使用过滤器存储在它上面?

有没有更好的方式来创建角度的摘录功能?

+0

您可以创建自定义过滤器:https://docs.angularjs.org/guide/filter –

回答

1

你可以有一个自定义过滤器:

app.filter('ellipsis', function() { 
    return function (text, length) { 
     if (text.length > length) { 
      return text.substr(0, length) + '...'; 
     } 
     return text; 
    } 
}); 

,你会使用这样的:

<div ng-bind-html="post.content | ellipsis:20"></div> 

,这里是一个演示:http://jsfiddle.net/FfT6s/348/

+0

这并不完全工作。它会计数html字符。他只想计算文字。 – m59

+0

yes as @ m59 says我想计算文本 –

+0

然后,这可能是您希望在服务器上这样做的一种方式,并将此信息作为属性返回给您的视图模型。 –

0

我刚刚创建NPM模块的一些过滤器。

striptags ellipsize

// stripTagsFilter.js 
var striptags = require('striptags'); 

module.exports = function() { 
    return function(input) { 
    if (!input || !input.length) { return input; } 
    return striptags.apply(null, arguments); 
    } 
}; 

// ellipsisFilter.js 
var ellipsize = require('ellipsize'); 

module.exports = function() { 
    return ellipsize; 
}; 

// wherever you do this stuff 
.filter('ellipsis', require('./ellipsisFilter.js')) 
.filter('stripTags', require('./stripTagsFilter.js')) 
<!-- strip the tags, limit to 20 characters --> 
<p>{{post.content | stripTags | ellipsis:20}}</p> 

剥去标签可以在剩下的文本压扁句子构成,所以你可能要添加过滤器来解决这个问题为好。我建议space-sentences

<p>{{post.content | stripTags | spaceSentences | ellipsis:20}}</p>