Я сохраняю данные в firebase из редактора WYSIWYG, используя angularJS. Эти данные будут в формате HTML.Угловое: ng-bind-html удаление ng-директив из данных HTML, полученных из Firebase
Я извлекаю данные HTML из firebase и с помощью угловой директивы ng-bind-html этот HTML-контент подвергается санированию, и текст, сохраненный в редакторе, будет показан пользователю. Этот текст может содержать текст, изображения, ссылки.
<div ng-bind-html="newHTML" ng-model="cleanText1"></div>
HTML, подходит для данных с ссылкой в указанном ниже формате:
<p>This is text editor <a href=\"http://someLink\">link</a><br></p>
Теперь, если я нажму эту ссылку на странице будет перенаправлять к URL specified.But Я хочу эту ссылку откройте страницу в div, которая находится в правой части страницы. Чтобы предотвратить такое поведение я заменил HREF с нг-HREF используя код ниже:
$scope.newHtml=$scope.htmlcontent1.replace("href","ng-href");
$scope.newHTML=$sce.trustAsHTML($scope.newHtml);
Выполнение этого нг-Bind-HTML удалены нг-HREF <p>This is text editor <a>link</a><br></p>
Который сделал unclickable.
Также я попытался добавить директиву для тега, чтобы после того, как пользователь нажмет на эту ссылку, я могу дать свои собственные функции, а не перенаправлять пользователя.
Директива выглядит следующим образом:
app.directive('a', function ($compile) {
return {
restrict: 'AE',
link: function (scope, elem, attrs) {
var href = elem.children('a').attr('href');
console.log("href"+href);
elem.children('a').attr('href', null);
elem.children('a').attr('ng-click', 'open()');
$compile(elem.contents())(scope);
console.log("elem"+elem.children('a').attr('href'));
scope.open = function() {
alert('1');
}
}
}
})
Но директива вызывается один раз пользователь нажимает и перенаправляется на новую страницу. Любые идеи о том, как открыть эту ссылку в правой части страницы? Цените свою помощь.
Если вы замените HTML из Firebase на тот же жесткий код HTML, у него все еще есть такая же проблема? Если это так, вы можете удалить Firebase и AngularFire из уравнения. –
@FrankvanPuffelen спасибо за помощь, но я боюсь, что мне нужно немного больше, я заменил HTML в firebase к Link Но нг-связывать-HTML при рендеринге этот HTML преобразует его в Link. ng-bind-html фильтрует угловые директивы и сохраняет только HTML. Есть ли способ предотвратить ng-bind-html для фильтрации угловых директив? –