vue中实现增删改查

vue中实现增删改查

一个正在努力爱好运动的前端
座右铭:越努力越幸运,越运动越健康,热爱编程,热爱运动。


文章目录

  • vue中实现增删改查
  • 小Demo
  • 添加
  • 删除
  • 修改
  • 查询
  • 全选单选


小Demo


<html>

<head>
	<meta charset="utf-8">
	<title>vue实现表格的增删改查title>
	<link rel="stylesheet" href="css/index.css">
	<script src="js/vue.js">script>
	<script src="js/index.js">script>
head>

<body>
	<div id="table">
		<div class="add">
			<input type="text" placeholder="标题" v-model="input.name" />
			<input type="text" placeholder="发布人" v-model="input.user" />
			<input type="date" placeholder="发布时间" v-model="input.date" />
			<button :disabled="!input.name||!input.user||!input.date" @click="addItem()">新增button>
		div>
		<table cellpadding="0" cellspacing="0">
			<thead>
				<tr>
					<th><input type="checkbox" v-model="checkALL" @change="selectAllItem(v)" />序号th>
					<th>标题th>
					<th>发布人th>
					<th>发布时间th>
					<th>操作th>
				tr>
			thead>
			<tbody>
				<tr v-for="(v,i) in items" :key="v.id">
					<td><input type="checkbox" v-model="v.check" @change="selectItem(v)" />{{v.id}}td>
					<td>{{v.name}}td>
					<td>{{v.user}}td>
					<td>{{v.date}}td>
					<td>
						<button :disabled="!v.check" @click="delItem(i)">删除button>
						
window.onload = function () {
    var vm = new Vue({
        el: '#table',
        data: {
            input: {
                name: '',
                user: '',
                data: '',
                check: false,
            },
            items: [
                { name: '增删改查案例', user: '故心v', date: '2020-11-04', id: 1, check: false },
                { name: '增删改查案例(增改结合)', user: '故心vvv', date: '2020-11-11', id: 11, check: false }
            ],
            flag: false,//弹框显示与隐藏
            checkALL: false,//多选,
            //编辑的数据
            edit: {
                name: '',
                user: '',
                data: '',
                check: false,
            },

        },
        methods: {
            //添加数据
            addItem() {
                //每次添加的时候item最大的id+1  遍历出所有id 
                var _id = Math.max(...this.items.map(v => v.id)) + 1;
                var { name, user, date, check } = this.input;
                this.items.push({
                    name,
                    user,
                    date,
                    id: _id,
                    check
                });
            },
            //全选
            selectAllItem() {
                //当全选,遍历循环所有check变成 变成全选的状态
                this.items.forEach(v => { v.check = this.checkALL});
            },
            //单选
            selectItem(v) {
                //全部选中时  全选打上√
                this.checkALL = this.items.every(v => v.check);
            },
            //删除
            delItem(i) {
                //splice
                // this.splice(i, 1);
                //filter
                this.items = this.items.filter((v, index) => index != i);
            },
            //编辑弹层显示及回显
            updataShow(v) {
                this.flag = true;
                //数据回显
                this.edit={
                    name:v.name,
                    user:v.user,
                    date:v.date,
                    id:v.id,
                    check:v.check
                }
            },
            //编辑更新
            updataItem() {
                //数据更改
                var { name, user, date, id, check } = this.edit;
                //循环遍历查找到并修改
                this.items.forEach((v, i) => {
                    //查找到相对于的item
                    if (v.id == id) {
                        v.name = name;
                        v.user = user;
                        v.date = date,
                        v.check = check;
                    }
                })
                //编辑弹层关闭
                this.flag = false;
            }
        },
    })
}

效果展示:

添加

其中一个为空时禁用
vue中实现增删改查_第1张图片
添加
vue中实现增删改查_第2张图片

删除

选中时可删除
vue中实现增删改查_第3张图片
vue中实现增删改查_第4张图片

修改

vue中实现增删改查_第5张图片
为空时禁止更新
vue中实现增删改查_第6张图片
vue中实现增删改查_第7张图片
vue中实现增删改查_第8张图片

查询

computer:{
    searchData(){
    //search为空时  retun items全部数据
    if(!search) return this.items;
    //模糊查询
    return this.items.filter(v=>{
          return v.name.includes(searchName);
    })
    }
}

全选单选

vue中实现增删改查_第9张图片

vue中实现增删改查_第10张图片
vue中实现增删改查_第11张图片

你可能感兴趣的:(vue,vue,vue.js)