6

Các kiễu góc 1.6 của $ http.jsonp không chơi đẹp với API tờ google:

Tôi đang cố gắng để lấy và sau đó nhận được dữ liệu của tôi từ tấm google, với những điều sau:

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

tôi successfuly manged để có được các dữ liệu từ các tờ, bằng cách sử dụng một chức năng (gọi lại), với một js vnila, bởi khi tôi thử với góc, tôi nhận được " đối tượng google.visualization.Query.setResponse "trong các nguồn, với lỗi của bảng điều khiển: Tham chiếu không bắt buộc Lỗi: google không được xác định.

Điều khó chịu nhất - lời hứa không lặp lại phản hồi và tôi không thể cập nhật giá trị của bảng ansyc. tôi đã cố gắng tất cả mọi thứ tôi có thể nghĩ đến (và tất cả các gợi ý trong stackoverflow), Những điều tôi đã cố gắng:

  1. đi qua các url như nó có, mà không params, cuase myabe các $ sce.trustAsResourceUrl cần toàn bộ url.
  2. không qua $ sce (hoạt động ở vanila js, không có ở đây).
  3. đặt tên hàm thành công lời hứa của tôi là "gọi lại".
  4. kiểm tra rằng tất cả các giá trị trong API của trang tính đều ở đây (một lần nữa, hoạt động với vanila).
  5. gọi "gọi lại" trong lời hứa, nhập nó làm chức năng bên trong lời hứa.
  6. nhận tất cả jsonp bên trong hàm trả về phản hồi, với & không có chức năng gọi lại.
  7. xóa cuộc gọi lại khỏi tham số "tqx = responseHandler: gọi lại" tất cả togther.
  8. chuyển lời hứa dưới dạng gọi lại trong tham số tqx.
  9. sử dụng 1,5 < "JSON_CALLBACK", không hoạt động với 1.6.
  10. thực hiện yêu cầu với vanila js và sau đó chuyển nó tới bộ điều khiển (công việc không thực hiện).

Nếu tôi nhớ nhiều thứ hơn, tôi sẽ cập nhật bên dưới.

làm ơn, ai có thể tìm ra vấn đề là gì? REALLY đánh giá cao, Cảm ơn, Yoav.

Trả lời

1

Trả lời câu hỏi của riêng tôi:

nếu các bạn có cùng một vấn đề, sử dụng tài sản $scope.$apply góc của. đây là một tài sản không được tài liệu hóa trong API của Angular, vì vậy đây là một số guide tốt đẹp khi sử dụng $, với một ví dụ hay. Triển khai của tôi:

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

khi tôi khai báo gọi lại ngoài bộ điều khiển của mình.

Đây là một cơn ác mộng.

Cảm ơn bạn đã bình chọn!

Các vấn đề liên quan