IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Vue增删改查秒上手!! -> 正文阅读

[JavaScript知识库]Vue增删改查秒上手!!

Vue增删改查

查询

<template>
  <div id="admin">
      <div class="header">
        <!-- 搜索 -->
        <el-input
          class="search"
          v-model="input"
          prefix-icon="el-icon-search"
          @change="search"
        />
      </div>
      <!-- 主体部分 -->
      <div class="main">
        <el-table :data="tableData">
          <el-table-column prop="id" label="编号" width="140">
          </el-table-column>
          <el-table-column prop="name" label="姓名" width="120">
          </el-table-column>
          <el-table-column prop="age" label="年龄"> </el-table-column>
          <el-table-column prop="job" label="职业"> </el-table-column>
          <el-table-column label="操作">
            <template slot-scope="scope">
              <el-button
                icon="el-icon-tickets"
                class="edit"
                circle
                @click="editIn(scope.row)"
              />
              <el-button
                icon="el-icon-delete"
                class="delete"
                circle
                @click="deleteIt(scope.row.id, scope.$index)"
              />
            </template>
          </el-table-column>
        </el-table>
      </div>
</template>
<script>
export default {
  data() {
    return {
      input: "",
      searchData: [],
      tableData: [
        { id: 101, name: "wxy", age: 19, job: "teacher" },
        { id: 102, name: "lxy", age: 19, job: "teacher" },
        { id: 103, name: "zxy", age: 19, job: "teacher" },
        { id: 104, name: "hxy", age: 19, job: "teacher" },
        { id: 105, name: "wxy", age: 19, job: "teacher" },
      ],
    };
  },
  methods: {
    // 退出
    exit() {
      this.$router.push("/");
    },
    // 查询
    search() {
      this.tableData = this.searchData;//将备份数据数值给渲染数据
      var data = [];//声明空数组用来筛选结果
      this.tableData.forEach((val) => {
        if (val.name.includes(this.input)) {//筛选符合条件的数据
          data.push(val);//将符合条件的数据存储到data
        }
      });
      this.tableData = data;//将data赋值给渲染数据
    },
  },

  //生命周期?-?挂载完成(可以访问DOM元素)
  mounted() {
    this.searchData = JSON.parse(JSON.stringify(this.tableData))//深拷贝
  },
};
</script>

增加

table组件

<template>
  <div id="admin">
      <div class="header">
        <!-- 搜索 -->
        <el-input
          class="search"
          v-model="input"
          prefix-icon="el-icon-search"
          @change="search"
        />
        <!-- 图标栏目 -->
        <div class="icons">
          <!-- 查看基本信息 -->
          <i class="el-icon-user-solid"></i>
          <!-- 修改密码 -->
          <i class="el-icon-setting"></i>
          <!-- 退出 -->
          <i class="el-icon-right" @click="exit"></i>
          <!-- 账户区域 -->
          <span>wxy</span>
          <img src="@/assets/logo/girl.jpg" @click="inMessage" />
        </div>
      </div>
      <!-- 主体部分 -->
      <div class="main">
        <el-table :data="tableData">
          <el-table-column prop="id" label="编号" width="140">
          </el-table-column>
          <el-table-column prop="name" label="姓名" width="120">
          </el-table-column>
          <el-table-column prop="age" label="年龄"> </el-table-column>
          <el-table-column prop="job" label="职业"> </el-table-column>
          <el-table-column label="操作">
            <template slot-scope="scope">
              <el-button
                icon="el-icon-tickets"
                class="edit"
                circle
                @click="editIn(scope.row)"
              />
              <el-button
                icon="el-icon-delete"
                class="delete"
                circle
                @click="deleteIt(scope.row.id, scope.$index)"
              />
            </template>
          </el-table-column>
        </el-table>
        <router-view
          :currentData="currentData"
          @getFather="getFather"
          @getAddSon="getAddSon"
        ></router-view>
      </div>
    </el-container>
  </div>
</template>

<script>
export default {
  data() {
    return {
      tableData: [
        { id: 101, name: "wxy", age: 19, job: "teacher" },
        { id: 102, name: "lxy", age: 19, job: "teacher" },
        { id: 103, name: "zxy", age: 19, job: "teacher" },
        { id: 104, name: "hxy", age: 19, job: "teacher" },
        { id: 105, name: "wxy", age: 19, job: "teacher" },
      ],
      addData: {},
    };
  },
  methods: {
    // 退出
    exit() {
      this.$router.push("/");
    },
    // 获取到子组件传递过来的值
    getFather(sonData) {
      this.tableData.forEach((val, index) => {
        if (val.id === sonData.id) {
          // 响应式渲染组件
          this.$set(this.tableData, index, sonData);
        }
      });
    },
    // 获取添加数据
    getAddSon(addData) {
      this.tableData.push(addData);
    }
  },
};
</script>

添加组件

<template>
  <!-- <el-dialog> -->
  <div class="addDialog">
    <h3 class="title">添加信息</h3>
    <el-form ref="form" :data="addForm" label-width="70px">
      <el-form-item label="id"
        ><el-input v-model="addForm.id"></el-input
      ></el-form-item>
      <el-form-item label="姓名">
        <el-input v-model="addForm.name"></el-input>
      </el-form-item>
      <el-form-item label="年龄">
        <el-input v-model="addForm.age"></el-input>
      </el-form-item>
      <el-form-item label="职业"
        ><el-input v-model="addForm.job"></el-input>
      </el-form-item>
      <el-form-item class="operation">
        <el-button class="ok" type="primary" @click="onSubmit()"
          >确认</el-button
        >
        <el-button class="exit" @click="exit">取消</el-button>
      </el-form-item>
    </el-form>
  </div>
</template>
  <script>
export default {
  data() {
    return {
      addForm: {
        id: "",
        name: "",
        age: "",
        job: "",
      },
    };
  },

  methods: {
    onSubmit() {
      this.$emit("getAddSon", this.addForm);
      this.$router.push("/admin");
    },
    exit() {
      this.$router.go(-1);
    },
  },
  //生命周期?-?创建完成(可以访问当前this实例)
  created() {
    //this.form = JSON.parse(JSON.stringify(this.currentData));
  },
};
</script>

删除

<template>
  <div id="admin">
      <!-- 主体部分 -->
      <div class="main">
        <el-table :data="tableData">
          <el-table-column prop="id" label="编号" width="140">
          </el-table-column>
          <el-table-column prop="name" label="姓名" width="120">
          </el-table-column>
          <el-table-column prop="age" label="年龄"> </el-table-column>
          <el-table-column prop="job" label="职业"> </el-table-column>
          <el-table-column label="操作">
            <template slot-scope="scope">
              <el-button
                icon="el-icon-delete"
                class="delete"
                circle
                @click="deleteIt(scope.row.id, scope.$index)"
              />
            </template>
          </el-table-column>
        </el-table>
      </div>
    </el-container>
  </div>
</template>

<script>
export default {
  data() {
    return {
      index: "",   
      tableData: [
        { id: 101, name: "wxy", age: 19, job: "teacher" },
        { id: 102, name: "lxy", age: 19, job: "teacher" },
        { id: 103, name: "zxy", age: 19, job: "teacher" },
        { id: 104, name: "hxy", age: 19, job: "teacher" },
        { id: 105, name: "wxy", age: 19, job: "teacher" },
      ],
    };
  },
  methods: {
    // 删除
    deleteIt(id, index) {
      console.log(id, index);
      let r = confirm("确定删除吗");
      if (r) {
        let i = this.tableData.findIndex((item) => {
          return item.id === id;
        });
        this.tableData.splice(i, 1);//i是索引,1删除一个
        alert("删除成功");
      } else {
        alert("删除失败");
      }
    },
   
  },
};
</script>

编辑

表格组件
<template>
  <div id="admin">
      <!-- 主体部分 -->
      <div class="main">
        <el-table :data="tableData">
          <el-table-column prop="id" label="编号" width="140">
          </el-table-column>
          <el-table-column prop="name" label="姓名" width="120">
          </el-table-column>
          <el-table-column prop="age" label="年龄"> </el-table-column>
          <el-table-column prop="job" label="职业"> </el-table-column>
          <el-table-column label="操作">
            <template slot-scope="scope">
              <el-button
                icon="el-icon-tickets"
                class="edit"
                circle
                @click="editIn(scope.row)"
              />
              <el-button
                icon="el-icon-delete"
                class="delete"
                circle
                @click="deleteIt(scope.row.id, scope.$index)"
              />
            </template>
          </el-table-column>
        </el-table>
        <router-view
          :currentData="currentData"//向子组件传递数值
          @getFather="getFather"//接受子组件传递的值
          @getAddSon="getAddSon"
        ></router-view>
        <!-- <router-view></router-view> -->
      </div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      tableData: [
        { id: 101, name: "wxy", age: 19, job: "teacher" },
        { id: 102, name: "lxy", age: 19, job: "teacher" },
        { id: 103, name: "zxy", age: 19, job: "teacher" },
        { id: 104, name: "hxy", age: 19, job: "teacher" },
        { id: 105, name: "wxy", age: 19, job: "teacher" },
      ],
      currentData: {},
    };
  },
  methods: {
    // 退出
    exit() {
      this.$router.push("/");
    },
    // 获取到子组件传递过来的值
    getFather(sonData) {
      this.tableData.forEach((val, index) => {
        if (val.id === sonData.id) {
          // 响应式渲染组件
          this.$set(this.tableData, index, sonData);
        }
      });
    },
    // 编辑
    editIn(sonData) {
      // 接受子组件传递过来的值
      this.currentData = sonData;
      this.$router.push("/admin/editor");
    },
   
};
</script>
编辑组件
<template>
  <!-- <el-dialog> -->
  <div class="editDialog">
    <h3 class="title">编辑内容</h3>
    <el-form ref="form" :data="form" label-width="70px">
      <el-form-item label="姓名">
        <el-input v-model="form.name"></el-input>
      </el-form-item>
      <el-form-item label="年龄">
        <el-input v-model="form.age"></el-input>
      </el-form-item>
      <el-form-item label="职业"
        ><el-input v-model="form.job"></el-input>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="onSubmit()">确认</el-button>
        <el-button @click="exit">取消</el-button>
      </el-form-item>
    </el-form>
  </div>
</template>

<script>
export default {
  data() {
    return {
      form: {
        id: "",
        name: "",
        age: "",
        job: "",
      },
    };
  },
  props: ["currentData"],//接受父组件传递数据
  methods: {
    onSubmit() {
      this.$emit("getFather", this.form);//向父组件传递数据
      this.$router.go(-1);
    },
    exit() {
      this.$router.go(-1);
    },
  },
  //生命周期?-?创建完成(可以访问当前this实例)
  created() {
    this.form = JSON.parse(JSON.stringify(this.currentData));//深拷贝
  },
};
</script>
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-24 00:05:00  更:2021-07-24 00:05:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/6 17:08:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码