我正在尝试vuejs跟随laracasts系列的网络广播。 Jeffrey Way在https://laracasts.com/series/learning-vue-step-by-step/episodes/8中讨论了自定义组件。我根据他的截屏下面的代码:了解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它指出:
Every comp onent实例有其自己的隔离范围。这意味着您不能(也不应该)直接引用子组件模板中的父数据。可以使用props将数据传递给子组件。“prop”是组件数据上的字段,预计将从其父组件传递。子组件需要使用道具选项明确声明它期望收到的道具:
组件如何知道将任务数组与列表关联?在这种情况下,我假设child = component和parent = vue实例?
数据是如何:任务[]成为从视图实例阵列可用于绑定列表=“任务”?我的猜测是,在阅读你所写的内容之后,它在视图实例元素的范围内变得可用 - 即
– user61629'#app' div中的所有内容都可以从主Vue实例中获得。会发生什么情况是,主vue实例可以访问组件和组件,因为每个vue实例总是暴露他们'data'和'props'内部的内容。因此,'list'属性属于组件,但可通过组件 –
与主实例联系。感谢您的帮助! – user61629