2017-07-25 21 views
1

ツールのリストを作成しています。データオブジェクトを親コンポーネントから子コンポーネントに渡す

私は、単一のファイルテンプレートを使用して、親コンポーネント(ツールリスト)から完全なツールデータオブジェクトを各子コンポーネント(ツールアイテム)に渡そうとしています。子コンポーネントで

、私はこのエラーを取得する:

...を例 titleまたは descriptionため、工具データオブジェクトの任意のプロパティです

Property or method "..." is not defined on the instance but referenced during render. Make sure to declare reactive data properties in the data option.

ここに私のセットアップがあります:それは簡単であるべき

<template> 
    <div class="tool"> 
     <div class="title">{{ title }}</div> 
     <div class="description">{{ description }}</div> 
    </div> 
</template> 

<script> 
    export default {} 
</script> 

、しかし:

Tools.vue(親):

<template> 
    <main id="tools"> 
     <tool v-for="tool in tools" :data="tool" :key="tool.id"></tool> 
    </main> 
</template> 

<script> 
    import Tool from './Tool.vue' 

    let test = { 
     id: 1, 
     title: 'Title', 
     description: 'Description' 
    }; 

    export default { 
     data() { 
      return { 
       tools: [ 
        test 
       ] 
      } 
     }, 

     components: {'tool': Tool} 
    } 
</script> 

Tool.vue(子)私は私のgoogle-fuで解決策を見つけることができません。私はここで何が欠けていますか?

+0

宣言の小道具を使用して、子コンポーネントのテンプレートでそれを参照することができ

<tool v-for="tool in tools" :tool="tool" :key="tool.id"></tool> 

、その子コンポーネントを受け入れるようにsupossedされます。 –

+0

私はそれを行うことができることを知っています。しかし、代わりに完全なデータオブジェクトを渡す方法はありますか? – Lazlo

+1

はい '$ data'をプロパティ' に保存することは可能ですが、それは良いアイデアです。 –

答えて

5

ツールオブジェクト全体を渡す場合は、まずプロパティを宣言します。

export default { 
    props: ["tool"] 
} 

次に、v-forを使用して渡します。あなたは子コンポーネントで

<div class="title">{{ tool.title }}</div> 
<div class="description">{{ tool.description }}</div> 
関連する問題