2017-01-20 4 views
1

をレンダリングするとき、データがfirebase上にある、と私はテンプレートで{{ligler[1].name}}を参照してください、私はこれを行うとき、それは動作しますが、私はエラーを取得[objectNumber]でのみ1のオブジェクトを表示したい:Vue.js - エラーコンポーネント

  • エラーコンポーネント
  • 捕捉されない例外TypeErrorをレンダリング:私が思うに、未定義

のプロパティ 'name' を読み取ることができません、問題はそのダですコンポーネントの前にロードされます。

私はv-forを使用すると、エラーなしですべてのオブジェクトの名前を表示しますが、オブジェクトを1つだけ表示したいだけです。

<template> 
    <div id="app"> 
    <h1>{{ligler[1].name}}</h1> 
    </div> 
</template> 

スクリプトを::

テンプレートは次のようになります

<script> 
import Firebase from 'firebase' 

let config = { 
    apiKey: "xxxxxxxxxx", 
    authDomain: "xxxxxxxxxx", 
    databaseURL: "https://xxxxxxxxxx.firebaseio.com" 
} 

let app = Firebase.initializeApp(config); 
let db = app.database(); 

let ligRef = db.ref('ligler'); 

export default { 
    name: 'app', 
    firebase: { 
    ligler: ligRef 
    } 
} 
</script> 

私はH1に、V-IFを追加しようとしましたが、それは動作しません。

このエラーを解決するにはどうすればよいですか?

+0

'はconsole.log(ligRef)の出力何;'?エクスポート前にこの行を挿入してください –

+0

U {u:Te、パス:L、m:ee、Nc:false、次に:undefined ...} は出力 – Can

答えて

1

このようなヌルチェック入れ:&&または||を使用して

<h1>{{ligler[1] && ligler[1].name}}</h1> 

をそれが必要でない場合、彼らは右辺を評価していないという意味論理演算子short circuitingと呼ばれています。これは簡潔さのためにwidely usedです。

ここでligler[1]が未定義の場合はligler[1].nameと評価されず、内部プロパティにアクセスする前にifを置くのと同じエラーは表示されません。

他のプロパティ(ligler[1])にアクセスするコンポーネントが多い場合は、v-ifを使用するのがより理にかかります。

<div v-if="ligler[1]"> 
    <h1>{{ligler[1].name}}</h1> 
    <h1>{{ligler[1].age}}</h1> 
    <h1>{{ligler[1].etc}}</h1> 
    </div> 
+0

です!私はなぜligler [1] &&を追加しなければならないのか説明できますか? liglerを特定するだけですか? – Can

+0

ありがとうございます! v-if = "ligler [1]"も動作していますが、どちらを使うのが良いですか? – Can

+0

@Saurahbh、私は1つの質問をもっと.. ..私はligler [1] .currentWeekとligler [1] .weeksを持っています currentWeekを変数として設定して、これを使用して現在の週をligler [ 1]。ウィーク? – Can

1

通常あなたがv-ifを使用してこれを簡素化することができます。

<template> 
    <div id="app" v-if="ligler[1]"> 
    <h1>{{ligler[1].name}}</h1> 
    </div> 
</template> 
+0

この作品!この解決策はより良いです

{{ligler [1] && ligler [1] .name}}

? – Can

+0

@Canそれは依存しています。コンポーネント全体が 'ligler [1]'に依存する場合、 'v-if'を使います。コンポーネントのほんの一部であれば' && 'を使います。 – str

+0

ありがとう!あなたは素晴らしいです – Can