2012-12-13 3 views
5

응용 프로그램을 개발 중입니다. 그 안에서 나는 $ http.get() 메소드를 사용하여 외부 파일angularJS 편안한 서비스를 사용하여 외부 파일의 json 데이터를 사용하는 방법

외부에서 json 데이터를 검색하고있다. 이제 각도를 사용하려고합니다

편안한 서비스. 그것은 필터에서 잘 작동하지만 컨트롤러에서 사용할 때

으로 표시됩니다.

//Service.js File 
angular.module('calenderServices', ['ngResource']). 
factory('Events', function($resource){ 
return $resource('/EventCalender/:File.json', {}, { 
query: {method:'GET', params:{File:'events'}, isArray:true} 
}); 
}); 


     //This is my app Module 
angular.module('calender', ['eventFilters','highlight','event','calenderServices']). 
config(['$routeProvider', function($routeProvider) { 
$routeProvider. 
    when('', {templateUrl: 'template.html', controller: MonthCtrl}). 
    otherwise({redirectTo: '/invalid'}); 
}]); 


    //This is my filter.js 
angular.module('eventFilters', ['calenderServices']).filter('compare', function(Events) { 
var events=Events.query(); 
alert(events[0].name); //it is displaying the name "Milestone1" }); 


    //This is my controller. 
function MonthCtrl($scope, Events){ 
var events=Events.query(); 
    alert(events[0].name); //it is displaying undefined 
    } 

    //whenever i try to use the variable 'events' in controller, it is displaying undefined or null. But in filter it is working fine. 

답변

1

다음 실 거예요 작품은 ngResource비동기 HTTP 요청을 수 있기 때문이다.

var events=Events.query(); 
alert(events[0].name); // <--- here events is an empty array 

은 일반적으로 당신이 할 필요가있는 다음과 데이터가보기

$scope.events = Events.query() 

그것은 동기 작업처럼 보인다에서 렌더링하는 데 사용할 수 있지만이 없습니다. 이것은 직장에서 각도의 선입니다. details from the docs에 대해 알아볼 수 있습니다.

추가 데이터를 처리하려면, 당신은 또한 get 방법 여기

Events.query(function(events){ 
    // here you have access to the first event's name 
    console.log(events[0].name); 
}); 

작업 예제에 성공 콜백을 통과 전달할 수 : http://plnkr.co/edit/NDZ2JWjMUoUvtzEuRUho?p=preview

+0

나는이 시도, 그것은 작동하지 않았다. 방금 이름을 '$ scope.events'로 '$ scope.eve'로 변경했습니다. 이제 작동 중입니다. 고마워. –

관련 문제