AngularJS создать html / ссылка / якорь из текста (escape / unescape html в представлении)

у меня есть контроллер, который имеет присвоенного значения:

$scope.post = 'please visit http://stackoverflow.com quickly';

у меня есть текст в моем html:

<p>{{post}}</p>

Я хотел бы сделать кликабельную ссылку url (окружите ее якорными тегами).

Я попытался изменить свой html на:

<p ng-bind-html="post | createAnchors"></p>

вот упрощенный пример проблемы:

http://jsfiddle.net/T3fFt/4/

вопрос в том, как я могу избежать всего текста сообщения, за исключением ссылка, которая будет окружена якорными тегами? ?

2 ответов


Я думаю, вы можете использовать linky фильтр Angular для этого:https://docs.angularjs.org/api/ngSanitize/filter/linky

Вы можете использовать его вот так:

<p ng-bind-html="post | linky"></p>

вам нужно будет включить модуль дезинфекции Angular для работы linky:

angular.module('myApp', [
    'ngRoute',
    'ngSanitize',
    'myApp.filters', 
    ...

вы можете использовать эту замену для строки:

'please visit http://stackoverflow.com quickly'.replace(/(http[^\s]+)/, '<a href=""></a>')

тогда вам нужно будет использовать $sce службы, и ngBindHtml