Sto provando i vuejs seguendo questa serie di webcast sui larici. In https://laracasts.com/series/learning-vue-step-by-step/episodes/8, Jeffery Way discute i componenti personalizzati. Ho il seguente codice basato sul suo screencast:Informazioni sugli elementi componenti dei componenti in 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}
]
}
In questo egli discute impostando gli oggetti di scena come segue:
props:['list']
Perché non è
props:['tasks'] ?
In http://vuejs.org/guide/components.html#Props si afferma:
Ogni comp. l'istanza onent ha un proprio ambito isolato. Ciò significa che non è possibile (e non dovrebbe) fare direttamente riferimento ai dati principali nel modello di un componente figlio. I dati possono essere passati ai componenti figlio usando i props.Un "prop" è un campo sui dati di un componente che si prevede venga passato dal suo componente principale. Un componente figlio deve dichiarare esplicitamente gli oggetti che si aspetta di ricevere utilizzando l'opzione props:
Come fa il componente a sapere di associare l'array delle attività all'elenco? Anche in questo caso presumo child = component e parent = the vue instance?
che modo i dati: le attività [] array dall'istanza di vista diventano disponibili per il legame elencare = "compiti"? La mia ipotesi, dopo aver letto ciò che hai scritto è che diventa disponibile nell'ambito dell'elemento di istanza della vista, ad esempio
– user61629Tutto ciò che è presente nel div di # # app è disponibile dall'istanza di Vue principale. Quello che succede è che l'istanza di vue principale ha accesso al componente e al componente, poiché ogni istanza di Vue espone sempre ciò che è all'interno dei "dati" e "oggetti di scena". Quindi, la proprietà 'list' appartiene al componente, ma è raggiungibile dall'istanza principale attraverso il componente –
Grazie per il tuo aiuto! – user61629