У меня есть несколько веб-сайтов, которые используют приложение AngularJS. На каждом веб-сайте есть другое отслеживание GTM. Я сохраняю код отслеживания в нашей базе данных. Например:
<!-- Google Tag Manager -->
<noscript>
<iframe src="//www.googletagmanager.com/ns.html?id=GTM-XXXXX"
height="0" width="0" style="display:none;visibility:hidden"></iframe>
</noscript>
<script>
(function (w, d, s, l, i) {
w[l] = w[l] || []; w[l].push({
'gtm.start':
new Date().getTime(), event: 'gtm.js'
}); var f = d.getElementsByTagName(s)[0],
j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src =
'//www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', 'GTM-XXXXX');</script>
<!-- End Google Tag Manager -->
В моем угловом приложении я получил код, но как мне его вставить в мой HTML? Я пытался:
<div id="tracking">
{{tracking}}
</div>
но это отображает код на экране.
Похоже, что решение заключается в использовании услуги $ sce. Пример здесь: http://erikaugust.com/thoughts/ng-bind-html/
это может помочь вам
вместо
<div id="tracking">
{{tracking}}
</div>
вы пишете, что
<div ng-bind-html="tracking">
</div>
в скрипте вы должны сделать
<script src="https://code.angularjs.org/1.4.9/angular.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular-sanitize.js"></script>
и вводить в модуль
var app = angular.module('myApp', ['ngSanitize']);