私はこれに関するlaracastシリーズのウェブキャストと共にvuejsを試しています。 https://laracasts.com/series/learning-vue-step-by-step/episodes/8では、Jeffery Wayがカスタムコンポーネントについて説明しています。この中VueJSのコンポーネント小道具を理解する
<div id="app">
<tasks list="tasks"></tasks>
</div>
<template id="tasks-template">
<ul>
<li :class="{'completed' : task.c}" @click = "task.c = ! task.c" v-for ="task in tasks">{{task.t}}</li>
</ul>
</template>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/1.0.12/vue.js"></script>
<script type="text/javascript">
vue.component('tasks', {
template: '#tasks-template',
props:['list'] // why not props:['tasks'] ??
});
new Vue({
el: '#app',
data: {
tasks: [
{t: 'go to doctor', c: false},
{t: 'go to work', c: false},
{t: 'go to store', c: true}
]
}
彼は次のように小道具を設定することについて説明します:私は彼のスクリーンキャストに基づいて、次のコード持って
props:['list']
をなぜそれがない
props:['tasks'] ?
http://vuejs.org/guide/components.html#Propsでは述べています:
すべてのコンプonentインスタンスは独自の独立スコープを持ちます。つまり、子コンポーネントのテンプレート内の親データを直接参照することはできません。データは、props.Aを使用して子コンポーネントに渡すことができます。「prop」は、親コンポーネントから渡されると予想されるコンポーネントのデータのフィールドです。子コンポーネントは、propsオプションを使用して受け取る予定の小道具を明示的に宣言する必要があります。
タスク配列をリストに関連付ける方法はありますか?この場合でも、私は子=コンポーネントと親= vueインスタンスと仮定しますか?
以下に変更することができますビューのインスタンスからタスク[]配列を結合するために利用可能になりますlist = "tasks"に?私の推測では、あなたが書いたものを読んだ後、ビューインスタンス要素の範囲内で利用できるようになります。つまり、
– user61629'#app' div内のすべてがVueのメインインスタンスから利用できます。何が起きるのは、メインのインスタンスインスタンスはコンポーネントとコンポーネントにアクセスできるということです。すべてのインスタンスインスタンスは、常に 'data'と' props'の内部に何を公開しているのでしょうか。したがって、 'list'プロパティはコンポーネントに属しますが、コンポーネントを介してメインインスタンスに到達可能です –
ありがとうございます! – user61629