2016-06-16 2 views
0

Я пытаюсь ввести свой скрипт Google Analytics в свое приложение. У меня есть жесткий код это в голове моего файла index.htmlAngularJs вводят тег скрипта google analytics

<script> 
     (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 
     (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 
     m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 
     })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); 
    </script> 

Вот мой директивы:

app.directive('googleAnalytics', function(configFactory){ 
    return { 
    restrict: 'E', 
    replace: true, 
    templateUrl: '../views/gaScript.html', 
    link: function(scope,element,attrs){ 
     configFactory.getconfigs().then(function(configs) { 
      scope.gid = configs[0].ga_id; 
     }); 
    } 
    }; 
}) 

директива использует этот шаблон gaScript.html, чтобы ввести правильный га ID

<script>ga('create', '{{gid}}', 'auto');</script> 

Это HTML тегов внутри тела, который заменяется директивой

<google-analytics></google-analytics> 

Проблема в том, я думаю, что страница читает эту <script>ga('create', '{{gid}}', 'auto');</script> в виде строки, а не интерпретировать тег сценария

+0

Что находится в '' ../ views/gaScript.html''? –

+0

@mparnisari это то, что находится внутри gaScript.html ' ' – Jason

+0

какая версия Углового вы используете? – alphapilgrim

ответ

0

Based прочь @mparnisari комментариев, которые я смог заставить его работать правильно. Вот окончательный результат, если это поможет кому-то другому.

Это закодирована в главе index.html страницы

<script> 
     (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 
     (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 
     m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 
     })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); 
    </script> 

Это директива:

app.directive('googleAnalytics', function(configFactory){ 
    return { 
    restrict: 'E', 
    replace: true, 
    link: function(scope,element,attrs){ 
     configFactory.getconfigs().then(function(configs) { 
      scope.gid = configs[0].ga_id; 
      var scriptTag = angular.element(document.createElement("script")); 
       scriptTag.text("ga('create', '"+scope.gid+"', 'auto');") 
       element.append(scriptTag); 
     }); 
    } 
    }; 
}) 

Это HTML тегов внутри тела index.html директивы

<google-analytics></google-analytics> 

В моей системе имеется несколько пользователей. этот код позволяет каждому пользователю использовать свой собственный идентификатор GA

+0

Я не использовал аналитику Google, поэтому я могу ошибаться, но зачем вводить скрипт, когда вы можете напрямую вызвать JS, т. Е. Изменить функцию ссылки на ссылку : function (scope) {ga ('create', scope.gid, 'auto'); } '? –

+0

@NikosParaskevopoulos Я не мог вызвать js напрямую, потому что страница не читала скрипт как тег скрипта, а вместо этого интерпретировала его как строку – Jason

+0

Нет, я имею в виду вызов функции ga() 'Google непосредственно из директивы вместо создания строка, которая станет скриптом, который вызывается 'ga()'. –