6

を使用しながら、アンギュラ1.6の$ http.jsonp GoogleシートAPIで素晴らしいプレーしません:私はフェッチして、自分のデータを取得しようとしている

Googleのシートから、次のように:

var callback; 
app.controller("meetingsTable", function ($scope, $http, $sce) { 

var url = "http://spreadsheets.google.com/a/google.com/tq"; 
var trustedUrl = $sce.trustAsResourceUrl(url); 
var key = 'MY_KEY'; 
var tq = 'select%20*%20limit%2010'; 
var tqx = 'responseHandler:callback'; 
var params = { 
    key: key, 
    tq: tq, 
    status: 'ok', 
    tqx: tqx 
}; 

callback = function (response) { 
    console.log(response); // entering here, not to the promise 
    return response; 
} 


    $http.jsonp(trustedUrl, { params: params }).then(function (response) { 
     console.log(response); 
     retrun; 
     //success things go here 
    }, function (response) { 
     //error things go here 
    }); 
}); 

私はsuccessfulyシートからデータを取得するためにうまく管理、機能(コールバック)を使用することにより、vnilaのJSで、私は角度をしようとしたときで、私は "ですgoogle.visualization.Query.setResponse "ソースで、コンソールエラー:Uncaught ReferenceError:googleが定義されていません。

最も厄介なもの - 約束が応答をreciveていない、と私は私のテーブルの値ansycを更新することはできません。 は私が(stackoverflowの中に、すべての提案)を考えることができるすべてを試してみました、 物事は私が試した:それはあるよう

  1. は$ sce.trustAsResourceUrlは全体のURLを必要とmyabe cuase、のparamsせずに、URLを渡します。
  2. $ sceなしで渡します(vanila jsで動作します、ここでは動作しません)。
  3. 「コールバック」として私の約束の成功機能を命名します。
  4. シートAPIのすべての値がここにあることを確認します(ここでもまたvanilaで動作します)。
  5. 約束の中で「コールバック」を呼び出し、それを約束の中の関数として入力します。
  6. コールバック関数なし&で、レスポンスを返す関数内のすべてのJSONPを取得。
  7. "tqx = responseHandler:callback"パラメータからコールバックをすべて削除togther。
  8. 約束をtqxパラメーターのコールバックとして渡します。 1.6では動作しません1.5 < "JSON_CALLBACK" を、使用して
  9. vanila jsでリクエストを行い、それをコントローラに渡します(仕事をしないでください)。

私はより多くの事で覚えている場合、私は以下に更新されます。

、誰もが問題なのかを把握することができますしてください? 本当にありがとう、 ありがとう、 Yoav。

答えて

1

自分の質問に答える:あなたたちは同じ問題を抱えている場合

は、の角度$scope.$applyプロパティを使用します。これはAngularのAPIのあまり文書化されていないプロパティなので、$ applyの使い方と良い例を紹介したのがguide です。 私の実装:

$scope.tableContentData; 
callback = function (response) { 
    $scope.$apply(function() { 
     $scope.tableContentData = response; 
    }); 
}; 
$http.jsonp(trustedUrl).then(function() { 
     //success stuff 
    }, function() { 
     //error stuff 
    }); 

私のコントローラの外にコールバックを宣言したとき。

これは悪夢でした。とにかく投票アップのための

ありがとう!

関連する問題