2016-06-16 4 views
0

Google Analyticsスクリプトを自分のアプリに挿入しようとしています。AngularJs google analyticsスクリプトタグを挿入

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; 
     }); 
    } 
    }; 
}) 

ディレクティブは、適切なGAのID

を注入するgaScript.htmlでこのテンプレートを使用しています。私は私の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> 

ここに私のディレクティブを持っています

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

このディレクティブ

<google-analytics></google-analytics> 
によって置き換えられます体内のhtmlタグであります

問題は、私は、ページが文字列としてこの<script>ga('create', '{{gid}}', 'auto');</script>を読んで、私はそれが正常に動作するために取得することができた@mparnisariコメントのオフに基づいてスクリプトタグ

+0

「../ views/gaScript.html」には何がありますか? –

+0

@mparnisariこれはgaScript.htmlの内部にあります。 ' – Jason

+0

あなたはAngularのどのバージョンを使用していますか? – alphapilgrim

答えて

0

を解釈されていないと考えています。これが他の人を助ける場合の最終結果です。

これは、ハード、このディレクティブで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); 
     }); 
    } 
    }; 
}) 

これは、ディレクティブのindex.htmlの体内htmlタグであります用途

<google-analytics></google-analytics> 

私のシステムには複数のユーザーが参加しています。このコードでは、各ユーザーはそれぞれのGA IDを使用できます

+0

私はGoogleアナリティクスを使用していませんので、間違えているかもしれませんが、JSを直接呼び出すことができます。 :function(scope){ga( 'create'、スコープ。gid、 'auto'); } '? –

+0

@NikosParaskevopoulosページがスクリプトタグとしてスクリプトを読み込むのではなく、代わりに文字列として解釈するので、jsを直接呼び出すことはできませんでした。 – Jason

+0

いいえ、Googleの 'ga()'関数を、これは 'ga()'を呼び出すスクリプトになります。 –