Vue实现 增删改查

举报
达拉崩巴斑得贝迪卜多 发表于 2021/12/24 15:12:01 2021/12/24
【摘要】 Vue实现 增删改查按照升降序显示 遮挡层css页面<style> body { width: 100%; height: 100%; } #hide { width: 500px; height: 200px; border: 1px ...

Vue实现 增删改查

按照升降序显示 遮挡层
css页面

<style>
        body {
            width: 100%;
            height: 100%;
        }

        #hide {
            width: 500px;
            height: 200px;
            border: 1px solid red;
            position: fixed;
            top: 100px;
            left: 50%;
            transform: translate(-50%);
            z-index: 9999;
            background-color: #fff;
            padding: 20px;

        }

        /*!*遮挡层*! 首先放置一个空盒子,宽高100%,*/
        .mask {
            position: absolute;
            width: 100%;
            height: 100%;
            background: rgba(0, 0, 0, 0.1);
            top: 0;
            left: 0;

        }

        .top {
            width: 100%;
            height: 10%;
            /* background-color: #eee; */
            display: flex;
            justify-content: space-between;
        }

        .btn {
            display: inline-block;
            width: 80px;
            height: 30px;
            line-height: 30px;
            text-align: center;
            background-color: rgba(0, 0, 0, 0.1);
        }
    </style>

html页面

<div id="app">
        <input type="text" placeholder="输入标题" v-model="obj.text">
        <input type="text" placeholder="姓名" v-model="obj.user">
        <button @click="add">提交留言</button>
        <button @click="sort(1)">按照升序显示</button>
        <button @click="sort(2)">按照降序序显示</button>
        <table border="1" width="800px" cellspacing="0">
            <tr>
                <th>序号</th>
                <th>留言标题</th>
                <th>姓名</th>
                <th>留言时间</th>
                <th>操作</th>
            </tr>
            <tr v-for="(v,i) in list" :key="i">
                <td>{{i+1}}-- {{v.id}}</td>
                <td>{{v.text}}</td>
                <td>{{v.user}}</td>
                <td>{{v.time}}</td>
                <td>
                    <button @click="edit(v)">编辑</button>
                    <button @click="del(i)">删除</button>
                </td>
            </tr>
        </table>
      <!-- 遮挡层 -->
        <div class="mask" v-show="isShow"></div>
        <div id="hide" v-show="isShow">
            <div class="top">
                <span>编辑</span> <button @click="isShow=false">x</button>
            </div> <br><br>
            <input type="text" placeholder="输入标题" v-model="editData.text"> <br><br>
            <input type="text" placeholder="姓名" v-model="editData.user"> <br><br>
            <span class="btn" @click="isShow=false">
                取消
            </span>
            <span class="btn" @click="update">
                确定
            </span>
        </div>
    </div>

js页面

<script>
    new Vue({
        el: "#app",
        data: {
            obj: { //放在obj对象中  
                text: "",
                user: "",
            },
            isShow: false,
            list: [
                {text:"标题1",user:"lv1",time:"2020-5-30",id:6},
                {text:"标题2",user:"lv2",time:"2020-5-29",id:9},
                {text:"标题3",user:"lv5",time:"2020-5-28",id:8},
            ],
            editData: {} //编辑的数据
        },
        methods: {            
            add() { // 增加
            var {text,user} = this.obj;   //用解构
            if (!text || !user) return;
                var _id =Math.max(...this.list.map(item=>item.id))+1;
                this.list.unshift({
                    text: text,
                    user: user,
                    id:_id,
                    time: new Date().toLocaleString().replace(/\//g, '-'),
                    times: new Date().getTime()
                })
                this.obj = {} //清空输入框的数据
            },
            del(i) {  //删除
                this.list.splice(i, 1)
            },
            update(){ //更新 用id寻找
                for(var i=0; i<this.list.length; i++){
                    if(this.list[i].id == this.editData.id){
                        this.list[i]= this.editData;
                        this.isShow = false; //弹层的显示
                    }
                }
            },
            edit(v) { //点击编辑  弹层显示  内容在弹层框里
                this.isShow = true; //弹层的显示
               //用解构
                var {text,user,id} = v; 
                this.editData = {
                    text:text,
                    user:user,
                    id:id,
                }; 
            },
            //排序 
            sort(num) {
                switch (num) {
                    case 1:
                        this.list.sort((x, y) => {
                            return y.times - x.times
                        })
                        break;
                    case 2:
                        this.list.sort((x, y) => {
                            return x.times - y.times
                        })
                        break;
                }
            },
        }
    })
</script>

增加 —>不用解构的写法:

if (!this.obj.text || !this.obj.user) return;
                var _id = Math.max(...this.list.map(item => item.id)) + 1;
                this.list.unshift({
                    text: this.obj.text,
                    user: this.obj.user,
                    id: _id,
                    time: new Date().toLocaleString().replace(/\//g, '-'),
                    times: new Date().getTime()
                })
                this.obj = {} //清空输入框的数据  

编辑 —>不用解构的写法:

  this.editData = {
                    text: v.text,
                    user: v.user,
                    time: new Date().toLocaleString().replace(/\//g, '-'),
                    times: new Date().getTime(),
                    id: v.id,
                };

划重点 重点来了!!!

…扩展运算符
Math.max() 传值只能为数值
如果我们得到的是数组,又想取到最大值,如下:

var list = [
    { id: 8, t: "一" },
    { id: 2, t: "二" },
    { id: 5, t: "三" }
]
var a = list.map(function(item){
    return item.id;
})
console.log(a); //  [ 8, 2, 5 ]

我们得到的a是一个数组,想放在Math.max()中去求,就需要用到…
我们继续打印 …a 可以得到数值类型的 8,2,5

var list = [
    { id: 8, t: "一" },
    { id: 2, t: "二" },
    { id: 5, t: "三" }
]
var a= list.map(function(item){
    return item.id;
})
console.log(a); //  [ 8, 2, 5 ]

console.log(...a); // 8,2,5

把…a 放在Math.max()里面求最大值 ,便可得到

var list = [
    { id: 8, t: "一" },
    { id: 2, t: "二" },
    { id: 5, t: "三" }
]
var a= list.map(function(item){
    return item.id;
})
console.log(a); //  [ 8, 2, 5 ]

var b =Math.max(...a);
console.log(b); // 8 

可以简写为

var list = [
    { id: 8, t: "一" },
    { id: 2, t: "二" },
    { id: 5, t: "三" }
]

var b =Math.max(...list.map( item=>item.id));
console.log(b); // 8 

运行结果是一样的

…合并数组

var arr1 = ['a', 'b'];  
var arr2 = ['c'];  
var arr3 = ['d', 'e'];  
// ES5 的合并数组  
arr1.concat(arr2, arr3);  
// [ 'a', 'b', 'c', 'd', 'e' ]  
// ES6 的合并数组  
[...arr1, ...arr2, ...arr3]  
// [ 'a', 'b', 'c', 'd', 'e' ]  
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。