2017-12-22 11 views
-5

この関数はAngularのAppComponentクラス内にあり、AJAX呼び出しを行い、JSONファイルを受け取り、ボタンクリックで変数に格納します。データバインディングの変数にアクセスできないのはなぜですか?

getData = function() { 
    let request = new XMLHttpRequest(); 
    request.open('GET', 'https://mywebsite.com/data.json'); 
    request.onload = function() { 
     let data = JSON.parse(request.responseText); 
    }; 
    request.send(); 
    } 

私はこのような使用とHTMLからdataにアクセスすることはできません。

<p>{{data.name}}</p> 

それは唯一私が

request.onload = function() { 
    let data = JSON.parse(request.responseText); 
    document.getElementById('myParagraph').innerHTML = data.name; 
}; 

ここ内部のそれを使用する場合どのように作るのですか作品data変数はこの関数の外部からアクセス可能で、HTMLのバインドに使用しますか?

+1

ようにあなたは、角2を使用して、またはdata'のみ 'onload'機能にスコープさせ' –

+0

をangularjsているクラスレベルで変数を持っている必要があります。これはローカル変数です。いいえ、他の場所にはアクセスできません。 – deceze

+1

あなた自身が答えました。インスタンスメンバーではなく、変数に値を格納します –

答えて

2

あなたはこの

export class SampleClass implements OnInit { 

data: any ; 

constructor() { 
} 

getData() { 
    let request = new XMLHttpRequest(); 
    request.open('GET', 'https://mywebsite.com/data.json'); 
    request.onload = this.manageData.bind(this); 
    request.send(); 
} 

resolveData(ev){ 
    this.data = JSON.parse(ev.target.response); 
    console.log(this.data); 
} 
} 
関連する問題