2017-10-02 4 views
0

Im travaillant sur une application Vue - très simple a déclaré une liste de tâches, comme l'exemple suivant. Cependant, je voudrais cacher mon champ de saisie sur submit (et par conséquent montrer seulement la sortie comme il le fait déjà), donc je peux faire une transition agréable, car un seul élément devrait être ajouté par champ de saisie.Masquer l'entrée sur submit (VUE)

J'espère que quelqu'un peut m'aider avec une bonne solution!

https://jsfiddle.net/541rd96r/

new Vue({ 
 
    el: "#madplan", 
 
    data: { 
 
    newTask_mandag: "", 
 
    taskList_mandag: [], 
 
    }, 
 

 
    methods: { 
 
    addTask_mandag: function() { 
 
     var task = this.newTask_mandag.trim(); 
 
     if (task) { 
 
     this.taskList_mandag.push({ 
 
      text: task 
 
     }); 
 
     this.newTask_mandag = ""; 
 
     } 
 
    }, 
 

 
    removeSubTask_mandag: function(task) { 
 
     var index = this.taskList_mandag.indexOf(task); 
 
     this.taskList_mandag.splice(index, 1); 
 
    }, 
 
    } 
 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
 
<script src="https://unpkg.com/vue/dist/vue.js"></script> 
 

 
<div id="madplan"> 
 
    <section> 
 
    <section class="prefetch" class="panel"> 
 
     <input class="input typeahead" type="text" placeholder="Tilføj ret til madplanen" v-model="newTask_mandag " v-on:keyup.enter="addTask_mandag"> 
 
    </section> 
 

 
    <details v-for="task in taskList_mandag" v-bind:key="task.text" class="sub-list-item"> 
 
     <summary>{{ task.text }} <button v-on:click="removeSubTask_mandag(task)">X</button></summary> 
 

 
    </details> 
 
    </section> 
 
</div>

+0

Désolé pour la mauvaise formation de découpe, c'est la copie de pâte! –

+0

Vous devriez formater votre code pour qu'il soit lisible – thanksd

Répondre

1

sur l'étiquette input ajouter la directive v-if='showInput' pour montrer conditionnellement l'élément. Ajoutez ensuite la propriété calculée pour déterminer la condition comme suit

computed: { 
     showInput: function() { 
     return !this.taskList_mandag.length 
     } 
    }, 
+0

Ah, merci beaucoup, c'était exactement ce que je cherchais! Cela fonctionne dans le jsfiddle, mais pas dans mon script local - pour le moment. Je vais le faire réparer cependant. –

+0

Vous êtes les bienvenus. J'espère que le script local fonctionnera aussi – kharhys

+0

Je l'ai fait, il a eu quelques problèmes avec mon twitter-typeahead sur l'entrée. J'ai une autre question pour vous, je l'afficherai comme un commentaire demain - sauf si vous avez d'autres préférences pour savoir comment je devrais le faire :) –