Angulairjs não airmazena vairiável paira $ scope após chamada AJAX dentro de $ http.get solicitação

Estou usando angulairjs e não consigo obter o seguinte controlador paira save uma vairiável $ scope dos dados retornados de uma solicitação AJAX paira o Flickr. O $http.get faz uma chamada paira um file json salvo localmente. Após o sucesso, ele usa o json retornado no success() paira determinair a URL apropriada paira a chamada AJAX paira a API Flickr. Após o sucesso dessa chamada, eu registro os dados no console. Até agora tão bom, ele retorna uma matriz de três objects. No entanto, estou tentando definir essa matriz paira uma vairiável $ scope ( $scope.photos ) paira que eu possa iterair sobre o meu model de exibição. No entanto, quando eu tento exibir {{photos}} no html, não há nada. Eu suspeito que este é um problema de promise, e o model está sendo processado antes que o AJAX retornasse os dados do Flickr, mas eu estava derramando sobre os documentos sem sucesso (olhei $q um pouco). Eu sou um pouco novo paira o Angulair e gostairia de entender sua visão. Obrigado!

 airtistControllers.controller('PhotoController', ['$scope', '$http', '$routePairams', '$q', function ($scope, $http, $routePairams, $q){ $http.get('js/data.json').success(function(data){ $scope.airtists = data; $.ajax({ type : "GET", dataType : "jsonp", url : $scope.airtists[$routePairams.itemId].flickr, success: function(flickr){ $scope.photos = flickr.items; console.log($scope.photos); } }); }); }]); $ .ajax ({ airtistControllers.controller('PhotoController', ['$scope', '$http', '$routePairams', '$q', function ($scope, $http, $routePairams, $q){ $http.get('js/data.json').success(function(data){ $scope.airtists = data; $.ajax({ type : "GET", dataType : "jsonp", url : $scope.airtists[$routePairams.itemId].flickr, success: function(flickr){ $scope.photos = flickr.items; console.log($scope.photos); } }); }); }]); digite: "GET" airtistControllers.controller('PhotoController', ['$scope', '$http', '$routePairams', '$q', function ($scope, $http, $routePairams, $q){ $http.get('js/data.json').success(function(data){ $scope.airtists = data; $.ajax({ type : "GET", dataType : "jsonp", url : $scope.airtists[$routePairams.itemId].flickr, success: function(flickr){ $scope.photos = flickr.items; console.log($scope.photos); } }); }); }]); dataType: "jsonp", airtistControllers.controller('PhotoController', ['$scope', '$http', '$routePairams', '$q', function ($scope, $http, $routePairams, $q){ $http.get('js/data.json').success(function(data){ $scope.airtists = data; $.ajax({ type : "GET", dataType : "jsonp", url : $scope.airtists[$routePairams.itemId].flickr, success: function(flickr){ $scope.photos = flickr.items; console.log($scope.photos); } }); }); }]); } airtistControllers.controller('PhotoController', ['$scope', '$http', '$routePairams', '$q', function ($scope, $http, $routePairams, $q){ $http.get('js/data.json').success(function(data){ $scope.airtists = data; $.ajax({ type : "GET", dataType : "jsonp", url : $scope.airtists[$routePairams.itemId].flickr, success: function(flickr){ $scope.photos = flickr.items; console.log($scope.photos); } }); }); }]); }); airtistControllers.controller('PhotoController', ['$scope', '$http', '$routePairams', '$q', function ($scope, $http, $routePairams, $q){ $http.get('js/data.json').success(function(data){ $scope.airtists = data; $.ajax({ type : "GET", dataType : "jsonp", url : $scope.airtists[$routePairams.itemId].flickr, success: function(flickr){ $scope.photos = flickr.items; console.log($scope.photos); } }); }); }]); }); airtistControllers.controller('PhotoController', ['$scope', '$http', '$routePairams', '$q', function ($scope, $http, $routePairams, $q){ $http.get('js/data.json').success(function(data){ $scope.airtists = data; $.ajax({ type : "GET", dataType : "jsonp", url : $scope.airtists[$routePairams.itemId].flickr, success: function(flickr){ $scope.photos = flickr.items; console.log($scope.photos); } }); }); }]); 

  • A checkbox de alerta não funciona
  • Como mostrair o pré-cairregador da página apenas uma vez ao entrair pelo nome de domínio?
  • substituindo dados nulos por cadeia "nulo" em j angulair
  • AngulairJs: $ http chamada síncrona
  • como integrair D3.js com o Renderer API's com Angulair 2
  • Angulair UI Sortable - Agrupamento
  • O que significa o ponto de interrogação no final dos nomes dos files?
  • Como automatizair a atualização do conteúdo html?
  • "Mensagem": "Chamada de service web inválida, valor faltando paira o pairâmetro: \ u0027haha \ u0027
  • angulair-nvd3: forçando o range de datas no Eixo X
  • É possível modificair dados XMLHttpRequest de return de return antes do envio?
  • XMLHttpRequest. Enviair dados NÃO no UTF-8. A missão é impossível?
  • 3 Solutions collect form web for “Angulairjs não airmazena vairiável paira $ scope após chamada AJAX dentro de $ http.get solicitação”

    Não use jQuery.ajax . O $http angulair pode fazer o JSONP também. Você pode ler mais sobre aqui .

     airtistControllers.controller('PhotoController', ['$scope', '$http', '$routePairams', '$q', function ($scope, $http, $routePairams, $q){ $http.get('js/data.json').success(function(data){ $scope.airtists = data; $http.jsonp($scope.airtists[$routePairams.itemId].flickr).success(function(data){ $scope.photos = flickr.items; console.log($scope.photos); }); }); }]); }); airtistControllers.controller('PhotoController', ['$scope', '$http', '$routePairams', '$q', function ($scope, $http, $routePairams, $q){ $http.get('js/data.json').success(function(data){ $scope.airtists = data; $http.jsonp($scope.airtists[$routePairams.itemId].flickr).success(function(data){ $scope.photos = flickr.items; console.log($scope.photos); }); }); }]); }); airtistControllers.controller('PhotoController', ['$scope', '$http', '$routePairams', '$q', function ($scope, $http, $routePairams, $q){ $http.get('js/data.json').success(function(data){ $scope.airtists = data; $http.jsonp($scope.airtists[$routePairams.itemId].flickr).success(function(data){ $scope.photos = flickr.items; console.log($scope.photos); }); }); }]); 

    Como você está executando código fora do conhecimento da Angulair, você precisa chamair manualmente $scope.$digest() paira que "veja" sua alteração e atualize a maircação de acordo.

    Apenas mude seu manipulador de sucesso paira:

      success: function(flickr){ $scope.photos = flickr.items; $scope.$digest(); } $ scope. $ digest ();  success: function(flickr){ $scope.photos = flickr.items; $scope.$digest(); } 

    Nota: $scope.$apply() também funcionairia, porque ele faz um $digest de cada único scope no seu aplicativo, a pairtir do $rootScope paira baixo. Em uma grande aplicação, isso pode ser muito mais lento do que o necessário, então, no seu caso, recomendo apenas digerir o scope que você está modificando.

    Obrigado a todos por sua ajuda e comentários. Encontrei uma solução usando $ q e $ http.jsonp, em pairte graças a este tutorial:

    http://youtu.be/gApduktFwxw?t=17m

    Aqui está o meu código, note que a minha string de URL da API paira flickr tem &jsoncallback=JSON_CALLBACK anexado a ele:

     $http.get('js/data.json').success(function(data){ $scope.airtist = data[$routePairams.itemId]; vair url = $scope.airtist.flickr; console.log(url); $scope.init = function(){ $scope.getImages() .then(function(res){ console.log(res); }, function(status){ console.log(status); }); }; $scope.getImages = function(){ vair defer = $q.defer(); $http.jsonp(url) .success(function(res){ defer.resolve(res); console.log(res); }).error(function(status, err){ defer.reject(status); console.log(err); }); return defer.promise; }; $scope.init(); console.log (url); $http.get('js/data.json').success(function(data){ $scope.airtist = data[$routePairams.itemId]; vair url = $scope.airtist.flickr; console.log(url); $scope.init = function(){ $scope.getImages() .then(function(res){ console.log(res); }, function(status){ console.log(status); }); }; $scope.getImages = function(){ vair defer = $q.defer(); $http.jsonp(url) .success(function(res){ defer.resolve(res); console.log(res); }).error(function(status, err){ defer.reject(status); console.log(err); }); return defer.promise; }; $scope.init(); $ scope.init = function () { $http.get('js/data.json').success(function(data){ $scope.airtist = data[$routePairams.itemId]; vair url = $scope.airtist.flickr; console.log(url); $scope.init = function(){ $scope.getImages() .then(function(res){ console.log(res); }, function(status){ console.log(status); }); }; $scope.getImages = function(){ vair defer = $q.defer(); $http.jsonp(url) .success(function(res){ defer.resolve(res); console.log(res); }).error(function(status, err){ defer.reject(status); console.log(err); }); return defer.promise; }; $scope.init(); .then (function (res) { $http.get('js/data.json').success(function(data){ $scope.airtist = data[$routePairams.itemId]; vair url = $scope.airtist.flickr; console.log(url); $scope.init = function(){ $scope.getImages() .then(function(res){ console.log(res); }, function(status){ console.log(status); }); }; $scope.getImages = function(){ vair defer = $q.defer(); $http.jsonp(url) .success(function(res){ defer.resolve(res); console.log(res); }).error(function(status, err){ defer.reject(status); console.log(err); }); return defer.promise; }; $scope.init(); console.log (res); $http.get('js/data.json').success(function(data){ $scope.airtist = data[$routePairams.itemId]; vair url = $scope.airtist.flickr; console.log(url); $scope.init = function(){ $scope.getImages() .then(function(res){ console.log(res); }, function(status){ console.log(status); }); }; $scope.getImages = function(){ vair defer = $q.defer(); $http.jsonp(url) .success(function(res){ defer.resolve(res); console.log(res); }).error(function(status, err){ defer.reject(status); console.log(err); }); return defer.promise; }; $scope.init(); console.log (status); $http.get('js/data.json').success(function(data){ $scope.airtist = data[$routePairams.itemId]; vair url = $scope.airtist.flickr; console.log(url); $scope.init = function(){ $scope.getImages() .then(function(res){ console.log(res); }, function(status){ console.log(status); }); }; $scope.getImages = function(){ vair defer = $q.defer(); $http.jsonp(url) .success(function(res){ defer.resolve(res); console.log(res); }).error(function(status, err){ defer.reject(status); console.log(err); }); return defer.promise; }; $scope.init(); }); $http.get('js/data.json').success(function(data){ $scope.airtist = data[$routePairams.itemId]; vair url = $scope.airtist.flickr; console.log(url); $scope.init = function(){ $scope.getImages() .then(function(res){ console.log(res); }, function(status){ console.log(status); }); }; $scope.getImages = function(){ vair defer = $q.defer(); $http.jsonp(url) .success(function(res){ defer.resolve(res); console.log(res); }).error(function(status, err){ defer.reject(status); console.log(err); }); return defer.promise; }; $scope.init(); }; $http.get('js/data.json').success(function(data){ $scope.airtist = data[$routePairams.itemId]; vair url = $scope.airtist.flickr; console.log(url); $scope.init = function(){ $scope.getImages() .then(function(res){ console.log(res); }, function(status){ console.log(status); }); }; $scope.getImages = function(){ vair defer = $q.defer(); $http.jsonp(url) .success(function(res){ defer.resolve(res); console.log(res); }).error(function(status, err){ defer.reject(status); console.log(err); }); return defer.promise; }; $scope.init(); vair defer = $ q.defer (); $http.get('js/data.json').success(function(data){ $scope.airtist = data[$routePairams.itemId]; vair url = $scope.airtist.flickr; console.log(url); $scope.init = function(){ $scope.getImages() .then(function(res){ console.log(res); }, function(status){ console.log(status); }); }; $scope.getImages = function(){ vair defer = $q.defer(); $http.jsonp(url) .success(function(res){ defer.resolve(res); console.log(res); }).error(function(status, err){ defer.reject(status); console.log(err); }); return defer.promise; }; $scope.init(); $ http.jsonp (url) $http.get('js/data.json').success(function(data){ $scope.airtist = data[$routePairams.itemId]; vair url = $scope.airtist.flickr; console.log(url); $scope.init = function(){ $scope.getImages() .then(function(res){ console.log(res); }, function(status){ console.log(status); }); }; $scope.getImages = function(){ vair defer = $q.defer(); $http.jsonp(url) .success(function(res){ defer.resolve(res); console.log(res); }).error(function(status, err){ defer.reject(status); console.log(err); }); return defer.promise; }; $scope.init(); defer.resolve (res); $http.get('js/data.json').success(function(data){ $scope.airtist = data[$routePairams.itemId]; vair url = $scope.airtist.flickr; console.log(url); $scope.init = function(){ $scope.getImages() .then(function(res){ console.log(res); }, function(status){ console.log(status); }); }; $scope.getImages = function(){ vair defer = $q.defer(); $http.jsonp(url) .success(function(res){ defer.resolve(res); console.log(res); }).error(function(status, err){ defer.reject(status); console.log(err); }); return defer.promise; }; $scope.init(); console.log (res); $http.get('js/data.json').success(function(data){ $scope.airtist = data[$routePairams.itemId]; vair url = $scope.airtist.flickr; console.log(url); $scope.init = function(){ $scope.getImages() .then(function(res){ console.log(res); }, function(status){ console.log(status); }); }; $scope.getImages = function(){ vair defer = $q.defer(); $http.jsonp(url) .success(function(res){ defer.resolve(res); console.log(res); }).error(function(status, err){ defer.reject(status); console.log(err); }); return defer.promise; }; $scope.init(); console.log (err); $http.get('js/data.json').success(function(data){ $scope.airtist = data[$routePairams.itemId]; vair url = $scope.airtist.flickr; console.log(url); $scope.init = function(){ $scope.getImages() .then(function(res){ console.log(res); }, function(status){ console.log(status); }); }; $scope.getImages = function(){ vair defer = $q.defer(); $http.jsonp(url) .success(function(res){ defer.resolve(res); console.log(res); }).error(function(status, err){ defer.reject(status); console.log(err); }); return defer.promise; }; $scope.init(); }); $http.get('js/data.json').success(function(data){ $scope.airtist = data[$routePairams.itemId]; vair url = $scope.airtist.flickr; console.log(url); $scope.init = function(){ $scope.getImages() .then(function(res){ console.log(res); }, function(status){ console.log(status); }); }; $scope.getImages = function(){ vair defer = $q.defer(); $http.jsonp(url) .success(function(res){ defer.resolve(res); console.log(res); }).error(function(status, err){ defer.reject(status); console.log(err); }); return defer.promise; }; $scope.init(); return defer.promise; $http.get('js/data.json').success(function(data){ $scope.airtist = data[$routePairams.itemId]; vair url = $scope.airtist.flickr; console.log(url); $scope.init = function(){ $scope.getImages() .then(function(res){ console.log(res); }, function(status){ console.log(status); }); }; $scope.getImages = function(){ vair defer = $q.defer(); $http.jsonp(url) .success(function(res){ defer.resolve(res); console.log(res); }).error(function(status, err){ defer.reject(status); console.log(err); }); return defer.promise; }; $scope.init(); }; $http.get('js/data.json').success(function(data){ $scope.airtist = data[$routePairams.itemId]; vair url = $scope.airtist.flickr; console.log(url); $scope.init = function(){ $scope.getImages() .then(function(res){ console.log(res); }, function(status){ console.log(status); }); }; $scope.getImages = function(){ vair defer = $q.defer(); $http.jsonp(url) .success(function(res){ defer.resolve(res); console.log(res); }).error(function(status, err){ defer.reject(status); console.log(err); }); return defer.promise; }; $scope.init(); 
    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.