2014-09-01 2 views
1

angularJS 팩터 및 컨트롤러에 문제가 있습니다 공장에서 http 응답을 받고 컨트롤러 에 API 응답을 사용하고 싶지만 공장을 처리하고 컨트롤러에 주입하는 방법을 모릅니다.컨트롤러 angularJS 팩토리에 주입 공장

.controller('PlaylistsCtrl', function ($scope, $http) { 
$http({ method: 'GET', url: "https://www.googleapis.com/blogger/v3/blogs/1309320265504420965/posts?key=***************" }). 
    success(function (data, status, headers, config) { 
     // this callback will be called asynchronously 
     // when the response is available 
     for (var i =0; i < data.items.length;i++) 
     { 

     var m, 
     urls = [], 
     str = data.items[i].content, 
     rex = /(https?:\/\/.*\.(?:png|jpg))/g; 

     while (m = rex.exec(str)) { 
      urls.push(m[1]); 
      data.items[i].ImageURL = urls[0]; 
      } 
      //data.items[i].ImageURL = urls[0]; 
     } 
     $scope.playlists = data.items; 
    }). 
    error(function (data, status, headers, config) { 
     // called asynchronously if an error occurs 
     // or \\server returns response with an error status. 
    }); 
}) 

답변

2

나는 당신이 무엇을 찾고 있는지 확실하지 않지만 http 호출을 반환함으로써 언제나 약속을 되돌릴 수 있습니다. 다음 컨트롤러에서 그 약속을 잡고 그것으로 뭔가를 할 : 예를 들어

: apiService.js

(function(app) { 
    "use strict"; 

    app.factory("apiService", ["$http", function($http) { 
     var get = function(url, config) { 
      return $http.get(url, config); 
     }; 

     var post = function(url, data, config) { 
      return $http.post(url, data, config); 
     }; 

     var put = function(url, data, config) { 
      return $http.put(url, data, config); 
     }; 

     var remove = function(url, config) { 
      return $http.delete(url, config); 
     }; 

     return { 
      get: get, 
      post: post, 
      put: put, 
      remove: remove 
     }; 
    }]); 
})(_app); 

및 컨트롤러에 바로 서비스를 주입 :

(function(app) { 
    "use strict"; 

    app.controller("MyCtrl", ["$scope", "apiService", function($scope, apiService) { 

      $scope.getData = function() { 
       apiService.get("/server/data").success(function(data) { 
        console.log(data); 
       }).error(function(err) { 
        console.log(err); 
       }); 
      }; 
     } 
    ]); 
})(_app); 

옵션 (응용 프로그램을. js) :

var _app = _app || {}; 

(function() { 

    "use strict"; 

    _app = angular.module("myApp", []); 
})(); 
+0

처음으로 감사합니다. 빠른 응답 무엇을합니까?$ scope.getData = function() { apiService.get ("/ server/data") 성공 (함수 (데이터) –

+0

) 이것은 모든 외부 API에 대한 일반 서비스를 만드는 방법을 보여주는 데모 일뿐입니다. 전화. getData는 apiService가 반환하는 약속을 사용하여 작업하는 방법을 보여주는 샘플 함수입니다. –

관련 문제