AngularJS摘录功能

时间:2015-11-07 22:01:43

标签: javascript angularjs

我的HTML字符串存储在我的数据库中(我的新帖子的内容)。

我知道要在我的视图中打印此html,我可以使用此

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

这很好,但是我想说我只打印前20个解析过的字符串。

有没有办法可以存储“ng-bind-html”的返回值以及刚刚使用的过滤器?

有没有更好的方法如何在角度创建摘录功能?

2 个答案:

答案 0 :(得分: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/

答案 1 :(得分: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>