第一張圖片沒有點擊編輯
當我點擊編輯時的第二張圖片
在這里,當我單擊哪個編輯按鈕時,所有處于回圈中的任務加上它在 if 部分將被隱藏,else 部分將被顯示,但我想在單擊編輯按鈕時隱藏特定任務。任何人都可以幫助我嗎?
<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>
uj5u.com熱心網友回復:
而不是布爾使用索引isEditing:
Vue.component('child', {
template: `
<section v-if="Task.length > 0" >
<section v-for="(tasks,index) in Task" :key="index" >
<section >
<div >
<div >
<p >{{ tasks.Task }}</p>
</div>
</div>
<div >
<div >
<p @click="removeTask(index)"></p>
<p @click="EditTaskI(tasks.Task,index)"></p>
</div>
</div>
</section>
<section v-if="isEditing === index">
<div >
<div >
<input type="text" :value="newTaskTitle" @change="taskContentChange">
</div>
</div>
<div >
<div >
<p @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>
uj5u.com熱心網友回復:
觀察: isEditing是您代碼中的罪魁禍首。AsisEditing是一個包含boolean值的全域變數。因此,在編輯時,您正在更新影響所有任務的 isEditing 的值。
解決方案:您可以在 Task 陣列的每個物件中添加 isEditing,而不是全域定義 isEditing。這樣您就可以更新單擊任務的值,而不是針對每個任務。
您的模板代碼將是:
<section class="TaskBox" v-if="!tasks.isEditing">
代替
<section class="TaskBox" v-if="!isEditing">
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/477330.html
標籤:javascript html Vue.js 循环 if 语句
