AngularJS: директива для вставки html выполнением всех скриптов
Допустим, мы получаем с сервера код вида
1 2 3 |
<script>alert(1234)</script><script type="text/javascript">alert(12345)</script> <script type="asdf">alert(1234)</script><script src="/js/alert.js">alert(1234)</script> <span style="color: red;">1234</span> |
и хотим его вывести в шаблоне.
Для обычного вывода с парсингом html-тегов достаточно
1 |
<div ng-bind-html="ad.html | trustAsHtml"></div> |
Но, к примеру, jQuery умеет выполнять все скрипты, которые есть в строке ad.html.
AngularJS такого из коробки не умеет.
Поэтому была написана директива bind-html-with-js, используется она также:
1 |
<div ng-bind-html="ad.html | trustAsHtml"></div> |
При этом все скрипты, и инлайновые, и внешние, будут выполнены, а их код в div вставлен не будет.
Код на гитхаб — https://github.com/bullgare/ng-directive-bind-html-with-js.
Пример использования:
JS Bin
http://jsbin.com/UXIMEmi/1/edit
Что почитать дальше/на чём основан:
код angular.js (функция jsonpReq)
http://stackoverflow.com/questions/2592092/executing-script-elements-inserted-with-innerhtml
http://code.jquery.com/jquery-1.10.2.js
Similar Posts
LEAVE A COMMENT
Для отправки комментария вам необходимо авторизоваться.