2015-11-07 72 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>