在 vue js 中,借助循环,我正在显示所有元素,我想从中隐藏一个元素,但所有元素都被隐藏了

巴维克

第一张图片没有点击编辑

当我点击编辑时的第二张图片

在这里,当我单击哪个编辑按钮时,所有处于循环中的任务加上它在 if 部分将被隐藏,否则部分将被显示,但我想在单击编辑按钮时隐藏特定任务。任何人都可以帮助我吗?

<script>
export default {
    data(){
        return{
            newTaskTitle: "",
            isEditing : false
        }
    },
    props:{
        Task:{
            type:Array,
            required: true
        },
    },
    methods:{
        removeTask: function(idx){
            this.Index = idx;
            this.$emit('remove',this.Index);
        },
        EditTaskI(tsk){
            this.task = tsk;
            console.log(this.task);
            this.isEditing = this.isEditing == true ? false : true;
            this.newTaskTitle = this.task;
        },
        TaskUpdated(indx){
            this.Index = indx
            this.$emit('update',this.Index,this.newTaskTitle);
            this.isEditing = this.isEditing == true ? false : true;
        },
        taskContentChange(e){
            this.newTaskTitle = e.target.value;
        }
    }
}
</script>
<template>
    <section v-if="Task.length > 0" class="taskMainSection">
        <section v-for="(tasks,index) in Task" :key="index" class="sectionTask" >
            <section class="TaskBox" v-if="!isEditing">
                <div class="TaskTitleList" >
                    <div class="TaskSection">
                            <p class="listTask">{{ tasks.Task }}</p>
                    </div>
                </div>
                <div class="OptionSectionMain">
                    <div class="OptionSection">
                            <p class="removeTask fa fa-close" @click="removeTask(index)"></p>
                            <p class="editTask fa fa-edit" @click="EditTaskI(tasks.Task,index)"></p>
                    </div>
                </div>
            </section>
            <section class="TaskBoxEdit" v-else>
                <div class="TaskTitleList" >
                    <div class="TaskSection">
                        <input type="text" class="form-control" :value="newTaskTitle" @change="taskContentChange">
                    </div>
                </div>
                <div class="OptionSectionMain">
                    <div class="OptionSection">
                            <p class="removeTask fa fa-check" @click="TaskUpdated(index)"></p>
                    </div>
                </div>
            </section>
        </section>
    </section>
</template>

尼古拉·帕维切维奇

而不是布尔使用索引isEditing

Vue.component('child', {
  template: `
    <section v-if="Task.length > 0" class="taskMainSection">
    <section v-for="(tasks,index) in Task" :key="index" class="sectionTask" >
      <section class="TaskBox" >
        <div class="TaskTitleList" >
          <div class="TaskSection">
            <p class="listTask">{{ tasks.Task }}</p>
          </div>
        </div>
        <div class="OptionSectionMain">
          <div class="OptionSection">
            <p class="removeTask fa fa-close" @click="removeTask(index)"></p>
            <p class="editTask fa fa-edit" @click="EditTaskI(tasks.Task,index)"></p>
          </div>
        </div>
      </section>
      <section class="TaskBoxEdit" v-if="isEditing === index">
        <div class="TaskTitleList" >
          <div class="TaskSection">
            <input type="text" class="form-control" :value="newTaskTitle" @change="taskContentChange">
          </div>
        </div>
        <div class="OptionSectionMain">
          <div class="OptionSection">
            <p class="removeTask fa fa-check" @click="TaskUpdated(index)"></p>
          </div>
        </div>
      </section>
    </section>
  </section>
  `,
  data(){
    return{
      newTaskTitle: "",
      isEditing : null
    }
  },
  props:{
    Task:{
      type:Array,
      required: true 
    },
  },
  methods:{
    removeTask(idx){
    console.log(idx)
      this.$emit('remove', idx);
    },
    EditTaskI(tsk, i){
      this.task = tsk;
      this.isEditing = i;
      this.newTaskTitle = this.task;
    },
    TaskUpdated(indx){
      this.Index = indx
      this.$emit('update',this.Index,this.newTaskTitle);
      this.isEditing = null;
    },
    taskContentChange(e){
      this.newTaskTitle = e.target.value;
    }
  }
})
new Vue({
  el: "#demo",
  data(){
    return{
      tasks: [{Task: 'aaa'}, {Task: 'bbb'}, {Task: 'ccc'}],
    }
  },
  methods: {
    updateTasks(i, name) {
      this.tasks[i].Task = name
    },
    removeTask(i) {
      this.tasks.splice(i, 1)
    }
  }
})
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css" integrity="sha512-KfkfwYDsLkIlwQp6LFnl8zNdLGxu9YAA1QvwINks4PhcElQSvqcyVLLD9aMhXd13uQjoXtEKNosOWaZqXgel0g==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="demo">
  <child :task="tasks" @update="updateTasks" @remove="removeTask"></child>
</div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章