表格新增行,可编辑删除行

html 复制代码
    <button type="button" style="margin-bottom:10px;" class="btn btn-primary" @click="addAddress"><i
            class="fa fa-plus"></i></button>
    <table class="table table-bordered">
        <tbody>
            <tr>
                <th style="width: 140px; text-align:center;">地址类型</th>
                <th>地址信息</th>
                <th style="width: 120px; text-align:center;">邮编</th>
                <th style="width: 120px; text-align:center;">操作</th>
            </tr>
            <tr v-for="(item, index) in addressList" :key="index">
                <td>
                    <span v-if="!item.isEdit">{{item.type}}</span>
                    <input v-else v-model="item.type" class="form-control" placeholder="请输入地址类型">
                </td>
                <td>
                    <span v-if="!item.isEdit">{{item.address}}</span>
                    <input v-else v-model="item.address" class="form-control" placeholder="请输入地址">
                </td>
                <td>
                    <span v-if="!item.isEdit">{{item.zipCode}}</span>
                    <input v-else v-model="item.zipCode" class="form-control" placeholder="请输入邮编">
                </td>
                <td>
                    <button v-if="item.isEdit" type="button" class="btn btn-default"
                        @click="handleEditAddress(index, false)"><i class="fa fa-check"></i></button>
                    <button v-else type="button" class="btn btn-default" @click="handleEditAddress(index, true)"><i
                            class="fa fa-edit"></i></button>
                    <button type="button" class="btn btn-default" style="margin-left:10px;"
                        @click="delAddress(index)"><i class="fa fa-times"></i></button>
                </td>
            </tr>
        </tbody>
    </table>
javascript 复制代码
const VueApp = {
	setup() {
		const empiData = Vue.ref({
		
		});
		const addressList = Vue.ref([
			{
				"type": "工作单位地址",
				"address": "山东省青岛市市北区福州北路浮山后街道23号",
				"zipCode": "26000",
				"isEdit": false
			},
			{
				"type": "户口地址",
				"address": "山东省青岛市市北区福州北路浮山",
				"zipCode": "26001",
				"isEdit": false
			},
			{
				"type": "籍贯地址",
				"address": "山东省青岛市市北区福州北路浮山",
				"zipCode": "26001",
				"isEdit": false
			}
		]);
		const addAddress = () => {
			for(let i in addressList.value){
				addressList.value[i].isEdit = false;
			}
			addressList.value.push({
				"type": "",
				"address": "",
				"zipCode": "",
				"isEdit": true
			});
		};
		const delAddress = (index) => {
		  addressList.value.splice(index, 1);
		};
		const handleEditAddress = (index, flag) => {
		  addressList.value[index].isEdit = flag;
		};
		return {
			empiData,
			addressList,
			handleEditAddress,
			addAddress,
			delAddress
		};
	},
};
const app = Vue.createApp(VueApp);
app.use(naive);
app.mount("#vue-app");
相关推荐
Hilaku6 分钟前
你们公司有 35 岁以上的前端吗?
前端·javascript·程序员
徐小夕12 分钟前
开源Vector-Graph-RAG:向量+图谱双引擎,打破纯向量RAG的效果天花板
前端·vue.js·github
阿屿15 分钟前
从零手搓 AI 伴侣(二):好感度通胀危机,与它的「货币政策」
java·人工智能
SameX22 分钟前
HarmonyOS ArkTS 把组件截图保存成 PNG 再调系统分享面板的做法
前端
灿飞22 分钟前
Kotlin与Java虚拟机十一:类与属性:构造顺序、backing field 与显式 backing field
java·后端·kotlin
aiks_yuan25 分钟前
40亿个QQ号 1G内存怎么去重:Java BitSet 装不下,long 数组位图 512MB 实测 46 秒(JDK 17)
java
Swot28 分钟前
SvelteKit SSG 发布后,为什么老访客非要强刷才能看到新内容?
前端
鸿蒙开发37 分钟前
小程序存档写到一半怎么办?双槽保存与损坏恢复实战
前端·javascript·react.js
文丑颜不良啊41 分钟前
LeetCode2521~2540题目解析
java·leetcode
杨凯凡42 分钟前
Spring Framework 7 HTTP Interface 实战:声明式 RestClient、超时与测试
java·spring·http