2016-08-01 3 views
-2

각도 1.5를 사용하고 있습니다.anguar 1.5 범위가없는 http.get의 데이터 액세스

http.get에서 http.get에 내 데이터에 액세스 할 수 없습니다. 설명해 드리죠 :

을 내 구성 요소가 :

(function(){ 
'use strict'; 
class myComponent { 
    constructor(
     $http, 
     $scope) 
    { 
     var self = this; 
     self.test="this is a test"; 
     $http.get(MYAPI).then(function(response){ 
     self.MYDATA = response.data; 
     console.log(self.MYDATA) 
     }); 
     console.log(self.test) 
     console.log(self.MYDATA) 
    } 

} 
angular.module('myApp') 
.component('myApp.test', { 
    templateUrl: 'myTemplate.html', 
    controller: myComponent, 
    controllerAs:'vm', 
}); 
})(); 

CONSOLE.LOG이 나를 제공 :

이 테스트있다 ->

정의되지 않은 시험에 대한 -> out of the http.get

Object {id : 1 ...} -> http : //

그래서 http.get에서 내 데이터에 액세스 할 수 없으며 이것이 내가 원하는 것입니다.

누군가가 있으십니까? 감사합니다.

+0

요청이 비동기 적이므로 할당이 아직 수행되지 않았습니다. 로그의 순서에 따라이 것을 볼 수 있어야합니다 ... 콜백에있는 하나가 읽을 수있는 순서의 첫 번째 임에도 불구하고 마지막으로 호출된다는 것을 알게 될 것입니다. – aw04

+0

맞습니다. 나는 눈치 채지 못했습니다. 감사합니다. 컨트롤러에 데이터를 사용하는 것에 대한 단서가 있습니까? – Wandrille

답변

0

$http.get은 프로그램 실행이 서버에서 데이터를 가져올 때까지 기다리지 않는 비동기 호출입니다.

$http.get() 외부에있는 console.log(self.MYDATA)이 실행될 때 데이터가 서버에서 가져 오지 않아서 undefined error이 표시됩니다.

var promise = $http.get(MYAPI); 

다음 콜백의 도움으로 다음과 같은 방법으로 데이터에 액세스 :

여기
promise.then(
      function successCallBack(response) 
       { 
        self.MYDATA = response.data; 
        console.log(self.MYDATA) 
       } 
      ).then(
       function errorCallBack(response) 
       { 
        console.log(response); 
       }   
      ); 

당신이 이런 일을 할 수있는이 문제를 해결하기 위해, 또는 비동기 호출을 처리하기 위해 당신을 도울 수 callbacks에 대한 좋은 기사!

+0

그게 효과가있다, 고마워. 그러나 나는 이유를 모른다. 나는 자식 구성 요소에서 가질 수 없다. 자식 컨트롤러에서는 self.test에 액세스 할 수 있지만 self.MYDATA에는 액세스 할 수 없습니다. 그러나 아마도이 질문은 관련이 없습니다. 나는 약속을 자녀에게 보낸 다음 약속을 지켜야합니까?(), 그것은 효과가 있지만 좋지는 않습니다. 또는 직접 데이터를 보낼 수도 있습니다 .MYDATA? – Wandrille

+0

promise를'global' 변수로 선언 할 수 있습니다. 그러면 callbacks를 사용하여 전체 스크립트에서'response'에 액세스 할 수 있습니다. 또는 서비스를 생성 할 수있는 하위 컴포넌트 대신에'response'를 인수로 보내면됩니다. 서비스 호출이 동기식이기 때문에 작동 할 것입니다 – varunsinghal65

+0

고맙습니다. 그게 나를 도왔습니다 – Wandrille