2013-05-16 7 views
1

json 파일을 검색하기위한 팩토리를 만들었습니다. 호출 후 해당 객체가 내 콘솔에 출력되지만 데이터는 내보기에 표시되지 않습니다. 내 컨트롤러에서 공장을 올바르게 호출하지 않습니까?데이터가 angularjs 팩토리에서 다시 전달되지 않음

여기 내 응용 프로그램입니다 : (모든 AJAX 요청과 마찬가지로)

var tools = angular.module("tools", []) 

tools.config(function ($routeProvider) { 

    $routeProvider.when('/home', { 
     templateUrl: 'home.html', 
     controller: 'HomeController' 
    }); 
    $routeProvider.when('/about', { 
     templateUrl: 'about.html', 
     controller: 'AboutController' 
    }); 




    $routeProvider.otherwise({ 
     redirectTo: '/home' 
    }) 

}); 

tools.controller("HomeController", function ($scope, fetchData) { 

    $scope.record = fetchData.getData(); 
    $scope.clearSearch = function() { 
     $scope.search = ""; 
     $scope.name2 = ""; 
    } 
    $scope.name2 = ""; 
    $scope.search = ""; 



}); 


tools.controller("AboutController", function ($scope) { 
    //nothing yet 
}); 



tools.factory('fetchData', function ($http) { 
    return { 
     getData: function() { 
      $http({ 
       method: 'GET', 
       url: 'list.json' 
      }). 
      success(function (data, status, headers, config) { 
       console.log(data); 
       return data; 
      }); 
     } 
    } 


}); 
+0

이 질문에 철저하게 답변 해 주시면 감사하겠습니다. –

답변

2

$http 호출이 비동기이기 때문에 콜백에서 return 문은 실제로 컨트롤러로에게 데이터를 반환하지 않습니다. 당신의 서비스에

fetchData.getData(function (data) { 
    $scope.record = data; 
}); 

: 당신의 컨트롤러에서

: 당신은 당신이 그것을 작성한 거의 같은 일, 또는 같은 getData에 콜백을 통과 할 수있는, $resource를 사용하여 보길 원하는 것 중 하나

tools.factory('fetchData', function($http) { 
    return { 
     getData: function(cb) { 
      $http({method: 'GET', url: 'list.json'}).success(cb); 
     } 
    } 
}); 
+0

큰 감사합니다! $ 리소스를 사용하여 구문을 변경하려면 구문을 빠르게 표시 할 수 있습니까? –

+0

@SunnyDay 불행히도 불행히도 - 귀하의 서버 (현재 가지고 있지 않을 수도 있음)에 적절한 REST 서비스가 필요합니다. 이 프리젠 테이션을 볼 수 있습니다 ... 그들은 36:00에 그것을 보여줍니다 - parleys.com/play/5148922b0364bc17fc56c91b/about – Langdon

+0

우수. 지금은 이해. 도와 주셔서 다시 한 번 감사드립니다! –

관련 문제