vue+mockjs模拟数据的增删改查功能

这一部分讲述了mock.js在vue中的详细使用(https://blog.youkuaiyun.com/yw00yw/article/details/81272632)。
在vue-cli项目中使用Mock模拟数据的增删改查操作:

mock.js:

// 模拟数据列表
var arr = [];
for(let i = 0 ; i < 10 ; i++){
    let newArticleObject = {
        name: Random.cname(),
        content: Random.csentence(5,10),
        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 rtype = options.type.toLowerCase(); //获取请求的类型
    switch (rtype) {
        case 'get':
            break;
        case 'post':
            let obj = JSON.parse(options.body).params.obj;
            // console.log("数据获取"+ obj);
            arr = arr.concat(obj);  // 将前台返回来的数据,拼接到数组中。
            break;
        default:
            break;
    }
    return {
        data: arr
    }
}
Mock.mock('/listAdd',/get|post/i,listAdd);

// 数据的修改操作
let listUpdate = function(options){
    let rtype = options.type.toLowerCase(); //获取请求的类型
    switch (rtype) {
        case 'get':
            break;
        case 'post':
            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 => {  // 将需要替换的数据替换掉
                return val.id === obj.id ? obj : val ;
            });
            break;
        default:
            break;
    }
    return {
        data: arr
    }
}
Mock.mock('/listUpdate',/get|post/i,listUpdate);

test.vue:

<template>
  <div>
      <div class="add">
        <input type="number" v-model="obj.id">
        <input type="text" v-model="obj.name">
        <input type="text" v-model="obj.content">
        <button @click="addList">添加</button>
        <button @click="updateList">修改</button>
      </div>
     <ul>
       <li v-for="item in list">{{item.id}}:*****:{{item.name}}:{{item.content}}--------<button @click="deleteList(item.id)">删除</button></li>
     </ul>
  </div>
</template>

<script>
  export default {
    data(){
      return {
        list: [],
        obj: {  //将添加的数据存到obj对象中
          id: 0,
          name: '',
          content: ''
        }
      }
    },
    created(){
      this.getData();
    },
    methods: {

      // 查询列表数据
      getData(){
        this.$http.get('/list').then(res => {
          this.list = res.data.data;
        });
      },

      // 删除列表数据
      deleteList(id){
        this.$http.post('/list',{
          params: {
           id: id
          }
        }).then(res => {
            this.list = res.data.data;
        });
      },

      // 增加列表数据
      addList(){
        // console.log("****"+this.obj);
        this.$http.post('/listAdd',{
          params: {
            obj: this.obj
          }
        }).then(res => {
            // console.log("请求成功"+res.data.data);
            this.list = res.data.data;
        });
      },

      // 修改列表数据
      updateList(){
        var that = this;
        this.$http.post('/listUpdate',{
          params: {
            obj: this.obj
          }
        }).then(function(res){
          // console.log("请求的数据"+res.data.data);
          that.list = res.data.data;
        });
      }
    }

  }
</script>

<style>
  *{
    padding: 0;
    margin: 0;
  }
  li{
    list-style: none;
    padding: 10px;
    border: 1px solid rgba(0, 0, 0, 0.2);
  }
</style>

效果预览:
这里写图片描述

Mock.js是一个强大的JavaScript函数式模拟数据库,它非常适合用于Vue.js项目中模拟API接口的请求。在Vue中使用Mock.js模拟数据通常涉及以下几个步骤: 1. 安装MockJS:首先需要通过npm或yarn安装MockJS。命令如下: ```bash npm install mockjs --save-dev # 或者 yarn add mockjs --dev ``` 2. 创建mock配置:在项目目录下创建一个`mock`文件夹,并在其中建立模拟数据json文件。例如,对于一个用户列表的CRUD操作,可以创建`mock/userList.json`,内容类似: ```json { "list": [ {"id": 1, "name": "User1", "email": "user1@example.com"}, {"id": 2, "name": "User2", "email": "user2@example.com"} ], "create": { "code": 201, "data": {"id": "3", "name": "New User", "email": "newuser@example.com"} }, "update": { "code": 200, "data": {"id": 1, "name": "Updated User1"} }, "delete": { "code": 204, "data": null } } ``` 3. 使用MockJS拦截请求:在Vue组件或全局配置中,利用Mock.js的`get`, `post`, `put`, `del`等方法拦截HTTP请求。假设我们使用axios: ```javascript // 全局mock import Mock from 'mockjs' Mock.mock('/api/user*', { 'get': () => require('./mock/userList.json').list, 'post': (options) => require('./mock/userList.json').create, 'put': (options) => require('./mock/userList.json').update, 'delete': (options) => require('./mock/userList.json').delete }) ``` 4. 在代码中处理响应:当你在Vue组件中发送请求时,MockJS会自动返回预设的数据。比如: ```javascript axios.get('/api/user') .then(response => { console.log('获取用户列表:', response.data) }) .catch(error => { console.error('获取用户列表失败:', error) }); ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值