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>
вот упрощенный пример проблемы:
вопрос в том, как я могу избежать всего текста сообщения, за исключением ссылка, которая будет окружена якорными тегами? ?
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