Я пытаюсь vuejs, следуя вместе с серией веб-трансляций laracasts об этом. В 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 говорится:
Каждый comp Onent-экземпляр имеет свою изолированную область видимости. Это означает, что вы не можете (и не должны) напрямую ссылаться на родительские данные в шаблоне дочернего компонента. Данные могут передаваться дочерним компонентам с использованием реквизита. «Подсказка» - это поле данных компонента, которое, как ожидается, будет передано из его родительского компонента. Детский компонент должен явно объявлять реквизиты, которые он ожидает получить, используя опцию реквизита:
Как этот компонент знает, чтобы связать массив задач со списком? Также в этом случае я предполагаю, что child = component и parent = экземпляр vue?
Как данные: задачи [] массив из экземпляра вида становятся доступными для связывания to list = "tasks"? Мое предположение, после прочтения того, что вы написали, заключается в том, что оно становится доступным в пределах области экземпляра элемента представления - то есть
– user61629Все внутри '# app' div доступно из основного экземпляра Vue. Что происходит, так это то, что основной экземпляр vue имеет доступ к компоненту и компоненту, поскольку каждый экземпляр vue всегда раскрывает то, что внутри «данных» и «реквизит». Таким образом, свойство 'list' принадлежит компоненту, но доступно к основному экземпляру через компонент –
Благодарим за помощь! – user61629