6

kątowej 1,6 na $ http.jsonp nie grać ładny z arkuszami google API:

staram się pobrać, a następnie dostać moje dane z google arkuszy, z następującym:

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

I successfuly manged uzyskać dane z arkuszy, przy użyciu funkcji (zwrotnej), z js vnila przez kiedy próbowałem z kanciasty, mam " google.visualization.Query.setResponse "obiekt w źródłach, z błędem konsoli: Uncaught ReferenceError: google nie jest zdefiniowany.

Najbardziej denerwująca rzecz - obietnica nie odpowiada na odpowiedź i nie mogę zaktualizować wartości mojego stołu. Próbowałem wszystkiego mogłem pomyśleć (i każdą sugestię w stackoverflow), Czego próbowałem:

  1. przechodzącej url jak jest, bez params, cuase myabe $ sce.trustAsResourceUrl potrzebuje cały URL.
  2. przekazywanie bez $ sce (działa w vanila js, nie tutaj).
  3. nazywając moją obietnicę sukcesu jako "oddzwanianie".
  4. sprawdzanie, czy wszystkie wartości w interfejsie API interfejsu API są tutaj (ponownie, działa z vanilą).
  5. nazywając "callback" wewnątrz obietnicy, wprowadzając go jako funkcję wewnątrz obietnicy.
  6. przeniesienie całego jsonp do funkcji, która zwraca odpowiedź, z & bez funkcji zwrotnej.
  7. usuwanie wywołania zwrotnego z parametru "tqx = responseHandler: callback" wszystko razem.
  8. przekazywanie obietnicy jako wywołania zwrotnego w parametrze tqx.
  9. używając 1.5 < "JSON_CALLBACK", który nie działa z wersją 1.6.
  10. wysyłanie żądania z vanila js, a następnie przekazywanie go do kontrolera (nie działają).

Jeśli będę pamiętać więcej, zaktualizuję poniżej.

Proszę, czy ktoś może zrozumieć, na czym polega problem? NAPRAWDĘ doceniam, Dzięki, Yoav.

Odpowiedz

1

Odpowiadając na moje własne pytanie:

jeśli macie ten sam problem, użyj kątową na $scope.$apply nieruchomości. jest to niezbyt dobrze udokumentowana właściwość w API Angulara, więc tutaj jest miło guide , kiedy można skorzystać z $ apply, z ładnym przykładem. Moja realizacja:

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

kiedy zadeklarowałem callback poza kontrolerem.

To był koszmar.

Dzięki za głosy i tak!