Comment puis-je publier via subInput (dans le composant, 2ème entrée) à la liste en dehors du composant? Je peux voir que l'entrée poste à subTaskList, mais ne l'affichera pas dans la liste?Publier sur la liste de Vue component
Pour des clarifications: J'essaye de faire un planificateur de nourriture, où les entrées principales avec placeholder = "Tilføj ret til madplanen" pour être la nourriture pour le jour, et la deuxième entrée avec placeholder = "Tilføj til indkøbsseddel" ajouter à un ShoppingList (#list)
(désolé pour les espaces réservés danois)
Vue.component('list-component', {
data: function() {
return {
newTask: "",
taskList: [],
newSubTask: "",
subTaskList: [],
};
},
template:
'<div>' +
'<section class="prefetch" class="panel">' +
'<input v-if="showInput" class="input typeahead" type="text" placeholder="Tilføj ret til madplanen" v-model="newTask" v-on:keyup.enter="addTask">' +
'</section>' +
'<details v-for="task in taskList" v-bind:key="task.text" class="sub-list-item">' +
'<summary>{{ task.text }}<button v-on:click="removeSubTask(task)">X</button>' + '</summary>' +
'<input class="subInput" type="text" placeholder="Tilføj til indkøbsseddel" v-model="newSubTask" v-on:keyup.enter="addSubTask">' +
'</details>' +
'</div>',
computed: {
showInput: function() {
return !this.taskList.length
},
},
methods: {
//addTasks
//
addTask: function() {
var task = this.newTask.trim();
if (task) {
this.taskList.push({
text: task
});
this.newTask = "";
}
},
addSubTask: function() {
var task = this.newSubTask.trim();
if (task) {
this.subTaskList.push({
text: task
});
this.newSubTask = "";
}
},
//removeTasks
//
removeSubTask: function(task) {
var index = this.taskList.indexOf(task);
this.taskList.splice(index, 1);
var index = this.subTaskList.indexOf(task);
this.subTaskList.splice(index, 999);
},
},
});
new Vue({
el: "#madplan",
data: {
newTask: "",
taskList: [],
newSubTask: "",
subTaskList: [],
},
});
* {
margin: 0;
padding: 0;
}
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<section id="madplan" class="section-wrapper">
<section class="check-list">
<h1>Mandag</h1>
<list-component></list-component>
<h1>Tirsdag</h1>
<list-component></list-component>
</section>
<ul id="list">
<h2>list</h2>
<li v-for="task in subTaskList" v-bind:key="task.text" class="list-item">{{ task.text }}</li>
</ul>
</section>
Fiddle: https://jsfiddle.net/txh85nq0/1/
Bonjour, merci pour la réponse. Ce n'est pas complètement le résultat que je pensais, mais je comprends la confusion - et apprécie votre soutien! Le nouveau violon ajoute l'entrée du champ de saisie dans la section .panel à la liste, mais la seconde entrée (celle avec la classe subInput) doit être ajoutée à la liste. –
Nevermind, semblait résoudre ce problème moi-même en ajoutant le "this. $ Emit ('addedtask', tâche)" à addSubTask à la place! –
J'ai une autre question simple. J'ai ajouté la ligne "this.subTaskList.splice (index, 999);" à la fonction removeSubTask, parce que je voulais qu'il supprime les éléments de la liste, qui ont été ajoutés par ce champ de saisie. Cela ne marche pas, au moins pas tout le temps. Et quand c'est le cas, il en supprime seulement un, pas tous. –