2017-07-05 6 views
0

JSONペイロード内のオブジェクトのリストをVue.jsを使用してテーブルに解析しようとしています。Vue JS v-forを使用してオブジェクト配列からJSONキー値を取得するときのエラー

私は作品を以下のコード、表の見出しを作成するために、配列の最初のオブジェクトから鍵を取りたいと正しい値を提供していますが、問題は、私はこのエラーメッセージ

にエラーメッセージが出続けるです

[Vue warn]: Error in render function: "TypeError: objectArray is null" 

(found in <Root>) 

HTML要素

<thead> 
    <tr> 
     <th v-for="(value, key) in objectArray[0]"> 
      {{ key }} 
     </th> 
    </tr> 
</thead> 

JSONペイロード

objectArray初めてヌルであり、アレイはないので
[ 
{ "field1": "value", "field2": "value", "field3": "value", "field4": "value", "field5": "value", "field6": "value", "field7": "value" }, 
{ "field1": "value", "field2": "value", "field3": "value", "field4": "value", "field5": "value", "field6": "value", "field7": "value" }, 
{ "field1": "value", "field2": "value", "field3": "value", "field4": "value", "field5": "value", "field6": "value", "field7": "value" } 
] 

var link = 'api/array'; 

new Vue ({ 
    el: '#app', 
    data: { 
     objectArray: null 
    }, 
    methods:{ 
     getObjectArray: function(){ 
      this.$http.get(link).then(function(response){ 
       this.objectArray = response.data; 
      }, function(error){ 
       console.log(error.statusText); 
      }); 
     } 
    }, 
    mounted: function() { 
     this.getObjectArray(); 
    } 
}); 
+0

この警告は、 'objectArray'プロパティが '0'のインデックスにアクセスしようとしているときに' null'であることを意味します。このJSONデータを非同期にロードしていますか? – thanksd

+0

非同期にロードされていません。リスト全体を問題なく同じ位置にロードできます。この問題は、使用するアレイ内の要素を指定した場合にのみ発生します。もし私が{{objectArray [0]}}を使ってそのインデックスにオブジェクトを出力しても、エラーはありません – excedion

+0

'objectArray'をどこに設定するかを表示できますか? – thanksd

答えて

1

エラーオブジェクトを移入するVueのコードがあります。

<thead v-if='objectArray'> 
    <tr> 
     <th v-for="(value, key) in objectArray[0]"> 
      {{ key }} 
     </th> 
    </tr> 
</thead> 
+0

ありがとうございます。最初にヌルを確認する必要がある場合は、Vue設定に何か問題がありますか? – excedion

+1

@ user2120640それは状況によって異なり、おそらく個人的な好みやチームの基準に従います。 'v-if'でチェックしたくない場合は、最初に' objectArray'を '[{}]'に設定することもできます。あるいは、 'objectArray [0]'の値を返す計算されたプロパティ 'fooObject'を作成することもできます。そうでない場合は空のオブジェクトを作成することもできます。それで 'v-for'で' fooObject'を参照するだけです。 – thanksd

関連する問題