This post is also available in: English-US (英語)
AngularJSを使ってCloud EndpointsのAPIを呼び出そうとしたら、下記のエラーが出ました。
原因はCloud Endpointsがサービスの起動時(初期化時)に上手く呼び出されていないかららしいです。
Uncaught TypeError: Cannot read property 'xxx' of undefined
クライアントライブラリを呼び出す
下記のjavascriptコードが他のコード(AngularJSやionicなど)よりも「一番最後に」呼び出されるようにしておきます。
ionicとはAngularJSベースのUIフレームワークで、OnsenUIとかと同じ部類のサービスです。
<script src="https://apis.google.com/js/client.js?onload=init"></script>
onload=init にて初期化関数 init() を呼び出すので、Cloud Endpoints を使いたいファイル(例えば、index.html なら index.js もしくは直接HTMLに書く)に下記のコードを付け加えます。
詳しいコードの意味は、記事終わりにあるリンクのgoogleディベロッパーガイドを参照してください。
function init() { window.init(); };
AngularJSのcontrollerに初期化処理を追加する
AngularJSのcontrollerもしくはserviceに以下のようなコードを追加します。コントローラーやサービスの引数に $window を取るのを忘れないようにしてください。
$window.init = function () { $scope.$apply($scope.sample_googleendpoints_lib); }; $scope.sample_googleendpoints_lib = function () { var ROOT = 'https://your_app_id.appspot.com/_ah/api'; gapi.client.load('your_api_name', 'v1', function () { doSomethingAfterLoading(); alert("Ready!"); }, ROOT); };No tags for this post.