2015-11-07 3 views
2

У меня есть строка HTML, хранящаяся в моей базе данных (содержимое моего нового сообщения).Функция вычитания AngularJS

Я знаю, что напечатать этот HTML, на мой взгляд, я могу использовать этот

<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 говорит, что я хочу пересчитать текст –

+0

Тогда это, вероятно, то, что вы хотите на сервере, и вернуть эту информацию в качестве свойства вашей модели представления. –

0

Я просто создать несколько фильтров с НПМ модулями ,

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> 
Смежные вопросы