mock实现增删改查、分页

1. 增删改查

import Mock from mockjs
// 模拟数据列表
var arr = [];
for (let i = 0; i < 10; i++) {
    let newArticleObject = {
        name: 小明,
        content: 内容,
        id: i
    }
    arr.push(newArticleObject); //将模拟的数据放到数组中
}

// 数据的删除操作
let list = function (options) {
    // console.log(options.type);
    let rtype = options.type.toLowerCase(); //获取请求的类型并转换为小写
    switch (rtype) {
        case get:
            break;
        case post:
            let id = parseInt(JSON.parse(options.body).params.id); // 获取请求的id,将options.body转换为JSON对象
            arr = arr.filter(function (val) {
                return val.id != id; // 过滤掉前台传过来的id对应的相应数据,并重新返回
            });
            break;
        default:
            break;
    }
    return {
        data: arr
    }
}
Mock.mock(/list, /get|post/i, list);

// 数据的添加操作
let listAdd = function (options) {
    //  console.log("传过来的数据"+JSON.parse(options.body).params.obj);
    let obj = JSON.parse(options.body).params.obj;
    // console.log("数据获取"+ obj);
    arr = arr.concat(obj); // 将前台返回来的数据,拼接到数组中。
    return {
        data: arr
    }
}
Mock.mock(/listAdd, /get|post/i, listAdd);

// 数据的修改操作
let listUpdate = function (options) {
    let obj = JSON.parse(options.body).params.obj;
    // console.log(JSON.parse(options.body).params);
    // let id = parseInt(JSON.parse(options.body).params.obj.id);
    arr = arr.map(val => { // 将需要替换的数据替换掉
        // console.log(val)
        return val.id == obj.id ? obj : val;
    });
    return {
        data: arr
    }
}
Mock.mock(/listUpdate, /get|post/i, listUpdate);

2.分页

if(MOCK == true){
    // url获取查询参数
    function getUrlParams(url, name) {
        if(url.indexOf(?)>-1){
            var paramsAry = url.substr(url.indexOf(?)+1).split(&);
            // 循环数据
            for (var i = 0; i < paramsAry.length; i++) {
                var tmp = paramsAry[i].split(=);
                if (tmp[0] == name) {
                    return tmp[1];
                }
            }
            return -1;
        }else{
            return -1
        }
    }
    Mock.mock(//posts/,get, function(options){
        let page = parseInt(getUrlParams(options.url, page))
        //当前页码
        if(page == -1) page = 1 
        let total = 10 //总共条数
        let size = 3 //每页条数
        let pages = Math.ceil(total/size) //共多少页
        let startIndex = (page - 1)  * size //开始下标
        let endIndex = (startIndex + size) < total ? (startIndex + size) : total //结束下标
        let records = []
        for (; startIndex < endIndex; startIndex++) {
            let o = Mock.mock({
                _id: "@id()",
                title: @ctitle,
                author: {nickName: @cname},
                category: {title: @cword(3)},
                createAt: @datetime,
                "state|1": [0,1]
            }) 
            records.push(o)
        }
        let display = []
        for (let i = 0; i < pages; i++) {
            display.push(i+1)
        }
        return {
            page: page,
            total: total,
            size: size,
            pages: pages,
            records: records,
            display: display
        }
    })
}
经验分享 程序员 微信小程序 职场和发展