使用vue实现一个字符串列表(如若干课程名的列表)数据的增加删除修改。并且增加删除修改结果显示在页面上。
时间: 2024-09-25 14:09:04 浏览: 32
在Vue.js中,实现字符串列表数据的操作(增删改查)并显示在页面上,通常会涉及到以下几个步骤:
1. **初始化数据**:
```javascript
data() {
return {
courses: ['课程1', '课程2', '课程3'], // 初始课程列表
isEditing: false, // 是否处于编辑状态,默认false
editingIndex: null, // 当处于编辑状态时,保存当前编辑的索引
};
},
```
2. **模板渲染**:
```html
<template>
<div v-for="(course, index) in courses" :key="index">
<span @click="toggleEdit(index)" :class="{ editing: isEditing && editingIndex === index }">{{ course }}</span>
<template v-if="isEditing && editingIndex === index">
<input type="text" v-model="courses[index]" placeholder="请输入新名称...">
<button @click="saveChanges(index)">保存</button>
<button @click="cancelEdit()">取消</button>
</template>
</div>
<button @click="addCourse">添加课程</button>
</template>
```
这里使用`v-for`循环遍历列表,并通过`@click`监听元素点击事件,触发相应的操作。
3. **处理方法**:
- `toggleEdit(index)`:切换是否进入编辑模式,并更新`editingIndex`。
- `saveChanges(index)`:验证输入后更新对应索引的课程名,然后设置`isEditing`为false。
- `cancelEdit()`:如果正在编辑,恢复原值,设置`isEditing`为false。
- `addCourse`:在列表末尾追加新的课程。
4. **事件绑定和方法实现**:
```javascript
methods: {
toggleEdit(index) {
this.isEditing = !this.isEditing;
if (this.isEditing) {
this.editingIndex = index;
}
},
saveChanges(index) {
if (this.courses[index]) { // 验证输入
this.$set(this.courses, index, this.courses[index]); // Vue的响应式数组更新机制
this.isEditing = false;
}
},
cancelEdit() {
if (this.editingIndex !== null) {
this.isEditing = false;
this.editingIndex = null;
}
},
addCourse() {
this.courses.push('');
}
}
```
以上就是一个简单的例子,当你对列表进行操作时,Vue会自动跟踪并更新DOM,展示出最新的状态。
阅读全文