好吧,已经有一段时间了,我已经找到了一个可以完成这项工作的解决方案(不久前),我将展示我是如何到达那里的,以防其他人偶然发现我的问题。
它最终变得非常简单,我的 html 中有以下内容
<!-- Google Tag Manager -->
<script ng-bind-html="googleTagManagerScript"></script>
<!-- End Google Tag Manager -->
然后在我的 app.js 中,我通过 ajax 调用获取设置,当我得到结果时,我执行以下操作
$rootScope.pixels.tagmanager = value; // store the retrieved Tag Manager code in a variable
$rootScope.googleTagManagerScript = $sce.trustAsHtml("(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='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','"+$rootScope.pixels.tagmanager.code+"');");
$rootScope.googleTagManagerNoScript = $sce.trustAsHtml("<iframe src='https://www.googletagmanager.com/ns.html?id="+$rootScope.pixels.tagmanager.code+"' height='0' width='0' style='display:none;visibility:hidden'></iframe>");
因此,基本上,只要一切可用,我就会将整个 Google 脚本放入一个变量中,并ng-bind-html
负责其余的工作。
我希望这是有道理的。