2016-06-01 6 views
1

私はInstagram APIをAngularで消費しています。私は認証なしでそれを消費しています。コールバックを使用しないでinstagram APIを呼び出す

私のコードは以下のようになります。コールバックを使用して、これがこのAPIを呼び出す最良の方法であるかどうかは誰にでも助言できますか?約束を使ってより良いアプローチがありますか?もしそうなら、これはどのように見えるでしょうか?また、このコードにエラーハンドラを追加するにはどうすればよいですか?

factory.js

app.factory('socialMedia', ['$http', function($http){ 
    return { 
     fetchInstagram: function(callback){  
      var url = "https://api.instagram.com/v1/users/*******/media/recent?client_id=*****&callback=JSON_CALLBACK"; 
      $http.jsonp(url).success(function(response){ 
       callback(response.data); 
      }); 
     } 
    } 
}]); 

controller.js

app.controller("instagramCtrl", ["socialMedia", function (socialMedia) { 
    instagramCtrl = this; 
    this.instagramPosts = []; 
    this.loading = true; 

    socialMedia.fetchInstagram(function (data){ 
     instagramCtrl.loading = false; 
     for(var i = 0; i < 5; i++){ 
      instagramCtrl.instagramPosts.push(data[i]); 
     }   
    }); 
}]); 

答えて

0

callbacksを使用しないでください、それは過去です。あなたはfetchInstagramメソッドからの約束を返すことを確認してください

app.factory('socialMedia', ['$http', function($http){ 
    return { 
     fetchInstagram: function() {  
      var url = "https://api.instagram.com/v1/users/*******/media/recent?client_id=*****&callback=JSON_CALLBACK"; 
      return $http.jsonp(url).then(function(response) { 
       return response.data; 
      }); 
     } 
    } 
}]); 

$httpサービスリターンはオプション(エラー処理、約束連鎖)はるかに便利であるオブジェクトを、お約束します。

socialMedia.fetchInstagram().then(function(data) { 
    $scope.data = data; 
}); 
+0

歓声:

は、次にコントローラに、あなたはこのようにそれを使用します!それは私が探していたものです – phantom

+0

あなたはどのようにfucntionがコントローラのように見えるかを示すことができますか? – phantom

+0

確かに、更新された回答を確認してください。 – dfsq

関連する問題