2017-09-18 11 views
0

こんにちは私の問題は、配列の長さをaccsessしようとすると、私は未定義ですが、配列だけにアクセスしようとするとすべて正常に動作します。配列undefined javascript

これは上記の作品はありません - >

console.log(this.ref_number_response[0].info.length); 

これは動作します - あなたがデータを受け取る後>

console.log(this.ref_number_response); 

と、これは全体の

check_ref_number: function() { 

this.ref_number_response = []; 

axios.get('/is_referenceNumber_free/'+this.ref_number) 
.then(response => this.ref_number_response.push({ 
    info: response.data 

})); 


console.log(this.ref_number_response[0].info.length); 

Event.$emit('reference_added', this.ref_number_response); 

}, 
+6

[どのように私は非同期呼び出しからの応答を返すのですか?](https://stackoverflow.com/questions/14220321/how-do-の可能性のある重複:だからあなたは、おそらくのような何かをする必要があると思いますi-return-from-as-asynchronous-call) – CBroe

+0

'ref_number_response'に何が入っているのかを確認してください。 – bhansa

+0

あなたは 'then'ステートメントの中にそのコードを入れる必要があります。 –

答えて

0

ですがイベントを放ち:

check_ref_number: function() { 
axios.get('/is_referenceNumber_free/'+this.ref_number) 
.then(response => Event.$emit('reference_added',[{info:response.data}])); 
} 

問題は、データを非同期で取得し、準備が整う前にデータを使用しようとしていることです。あなたはinfoプロパティを取得しようとしている(あなたが配列の長さにアクセスしようとしているが、

this.ref_number_response 

が配列であるので、このconsole.log(this.ref_number_response[0].info.length);が動作するように起こっている唯一の方法と

+0

は動作しません –

+0

あなたはどんなエラーを受けていますか? catch節を追加してエラーを出力してください。 – Eladian

0

実際の配列の長さではなく、配列の長さの最初の要素から)は、infoも配列だった場合です。

console.log(this.ref_number_response.length); 
+0

これは当てはまりますが、上記のコードはこの変更に関係なく失敗します。 – Eladian

+0

変更後にどのようなエラーが発生しますか?未定義?ヌル値? (上記の男も右であることに注意してください) –

+0

これは機能しません、私は長さに正しい方法を公開していますが、 –