SSMP整合案例(11) 在界面中实现添加操作

这篇具有很好参考价值的文章主要介绍了SSMP整合案例(11) 在界面中实现添加操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

上文 SSMP整合案例(10) vue端调整项目环境 发送请求 基本界面编写我们搭建了基本的页面结构

然后 我们来做个新增的功能
首先 新增 我们肯定是用户点击了这个新建之后 我们再来处理这个逻辑
SSMP整合案例(11) 在界面中实现添加操作,vue.js,javascript,ecmascript
我们之前的代码 新增是有绑定 一个事件的
SSMP整合案例(11) 在界面中实现添加操作,vue.js,javascript,ecmascript
但是这个 AddBook中并没有内容
SSMP整合案例(11) 在界面中实现添加操作,vue.js,javascript,ecmascript
首先 我们要写一个组件 来处理我们添加一条图书数据的逻辑
我们在components文件夹下创建一个文件 叫 bookFillIn.vue
参考代码如下

<template>
  <el-dialog
    :title="title"
    :visible.sync="switchs"
    :before-close="bookClose"
    width="500px"
  >
        <el-form
          label-width="120px"
          :model="formInline"
          :rules="rules"
          ref = "formInline"
          size="small"
        >
          <el-form-item
            label="图书名称:"
            prop="name"
          >
            <el-input
              v-model="formInline.name"
              placeholder="请输入图书名称"
              style="width: 300px;"
            ></el-input>
          </el-form-item>
          <el-form-item
            label="图书类别:"
            prop="type"
          >
            <el-select
              v-model="formInline.type"
              placeholder="请选择图书类别"
              style="width: 300px;"
            >
              <el-option
                v-for = "item in typeIn"
                :label="item.label"
                :value="item.value"
                :key="item.value"
              ></el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="图书描述:">
              <el-input
                type="textarea"
                style="width: 300px;"
                :rows="2"
                placeholder="请输入图书描述"
                v-model="formInline.description">
              </el-input>
          </el-form-item>
        </el-form>
        <div slot="footer" class="dialog-footer">
          <el-button @click="bookClose">关闭</el-button>
          <el-button type="primary" @click="submitTo">确定</el-button>
        </div>
  </el-dialog>
</template>

<script>
export default {
  name: 'bookFillIn',
  data() {
    return {
      title: "",
      switchs: false,
      formInline: {
          name: "",
          type: "",
          description: ""
      },
      rules: {
        name: [
          { required: true, message: '图书名称不能为空', trigger: 'blur' },
        ],
        type: [
          { required: true, message: '图书类别为必选项', trigger: 'blur' },
        ]
      },
      typeIn: [
        {
          value: 0,
          label: "知识科普"
        },
        {
          value: 1,
          label: "休闲图书"
        },
        {
          value: 2,
          label: "官方记录"
        },
        {
          value: 3,
          label: "典藏"
        }
      ]
    }
  },
  methods: {
    bookClose() {
      this.switchs = false;
    },
    submitTo(){
        this.$refs.formInline.validate((valid) => {
          if (valid) {
            console.log("提交");
          }
        });
    },
    sensor(name){
      this.switchs = true;
      this.title = name?name:"";
    },

  }
}
</script>

<style scoped>

</style>

这里 我们编写了一个el-dialog Element弹窗组件
然后 我们定义了一个表单 让用户手动填写图书的信息
这里我们通过遍历 typeIn 给el-select下拉框循环加上选择项目
然后 我们通过rules 验证了数据为空的情况 防止用户提交空数据给我们
这里 需要大家有一点vue2+Element UI的基础
然后写好之后 就是我们App.vue要去调用这个组件

我们如下图 调用 然后使用
SSMP整合案例(11) 在界面中实现添加操作,vue.js,javascript,ecmascript
然后 我们将AddBook函数修改如下

AddBook() {
    this.$refs.bookFill.sensor("添加图书");
},

当AddBook触发时 我们通过refs拿到我们的bookFillIn组件元素 然后 调用下面的sensor函数 打开弹窗
我们启动项目 然后点击 新建按钮
运行结果如下
SSMP整合案例(11) 在界面中实现添加操作,vue.js,javascript,ecmascript
可以看到 我们的弹窗就出来了

然后 我们什么都不填 直接点击右下角确定按钮
SSMP整合案例(11) 在界面中实现添加操作,vue.js,javascript,ecmascript
上面就会提示我们了

那么 现在 我们就需要来调用接口了
我们在 src下的 api 下的bookApi.js加一个函数
参考代码如下

export function AddBook(data){
    return request({
        url:`/books`,
        method:'post',
        data:data,
    })
}

SSMP整合案例(11) 在界面中实现添加操作,vue.js,javascript,ecmascript
因为我们之前是post请求 添加 然后 我们数据用的是 body下的 所以 我们用data传参

然后我们在src下的components下的bookFillIn.vue
引入一下我们刚刚写的AddBook
SSMP整合案例(11) 在界面中实现添加操作,vue.js,javascript,ecmascript
然后将bookFillIn.vue中的submitTo 提交数据方法更改如下

submitTo(){
   this.$refs.formInline.validate((valid) => {
      if (valid) {
        AddBook(this.formInline).then(res => {
          if(res.state == 200) {
            this.$message({
              message: res.message,
              type: 'success'
            });
          }else{
            this.$message.error(res.message);
          }
        })
      }
    });
},

这里 我们直接调用AddBook 传入表单处理好的formInline
然后 判断返回值 res.state == 200
因为 我们之前处理的就是 state 200 表示成功 500则失败
用两个对用不同的提示语法
用我们后台返回的message 做提示
然后 我们运行代码 在弹出表单中填上对应表单的信息
SSMP整合案例(11) 在界面中实现添加操作,vue.js,javascript,ecmascript
然后 我们点击确定
运行结果如下
SSMP整合案例(11) 在界面中实现添加操作,vue.js,javascript,ecmascript
我们看控制台请求返回的信息
SSMP整合案例(11) 在界面中实现添加操作,vue.js,javascript,ecmascript
也是没有任何问题

然后 看数据库表 我们的数据就已经加上去了
SSMP整合案例(11) 在界面中实现添加操作,vue.js,javascript,ecmascript
但是 这里 我们还有几个问题 要处理
首先 我们添加完 在列表上 第一时间看不到 第二 添加之后 弹出框不会自动关掉

首先 我们在 App.vue 中 将bookFill组件使用的地方代码改成这样

<book-fill ref = "bookFill" @getAll = "getAll" />

将我们查询的 getAll 函数传给子组件
SSMP整合案例(11) 在界面中实现添加操作,vue.js,javascript,ecmascript
然后 我们子组件bookFillIn.vue
submitTo函数更改如下

submitTo(){
this.$refs.formInline.validate((valid) => {
      if (valid) {
        AddBook(this.formInline).then(res => {
          if(res.state == 200) {
            this.$message({
              message: res.message,
              type: 'success'
            });
            this.bookClose();
            this.$emit('getAll');
          }else{
            this.$message.error(res.message);
          }
        })
      }
    });
},

可以看到 我们成功之后 调用bookClose 关闭当前弹出 然后调用父组件传来的getAll
让列表重新查询
SSMP整合案例(11) 在界面中实现添加操作,vue.js,javascript,ecmascript
我们点击确定
SSMP整合案例(11) 在界面中实现添加操作,vue.js,javascript,ecmascript
弹出也关了 然后 我们的数据就刷新了

但是 这里又带来了一个问题
我们添加完之后 再次点击新建 我们会发现我们之前输入的内容还在上面
SSMP整合案例(11) 在界面中实现添加操作,vue.js,javascript,ecmascript
因为 vue是一个前端响应式框架 这里的表单提交之后 他是不会跳转的 所以 界面没有更新
我们需要在每次打开弹窗时重置一下数据

我们在 bookFillIn.vue 中定义一个函数
参考代码如下

resetting() {
 this.formInline = {
      name: "",
      type: "",
      description: ""
  }
}

然后 在打开弹窗的sensor中调用它
SSMP整合案例(11) 在界面中实现添加操作,vue.js,javascript,ecmascript
然后 我们再添加一条数据
SSMP整合案例(11) 在界面中实现添加操作,vue.js,javascript,ecmascript
我们再重新打开弹窗 可以看到 一切正常了就
SSMP整合案例(11) 在界面中实现添加操作,vue.js,javascript,ecmascript文章来源地址https://www.toymoban.com/news/detail-532125.html

到了这里,关于SSMP整合案例(11) 在界面中实现添加操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SSMP整合案例(2) Spring Boot整合Lombok简化实体类开发

    好啊 接着我们上文SSMP整合案例(1) 构建 Spring Boot Vue MySql项目环境 我们继续 接下来 我们要在java项目中 建立出数据库表对应的实体类 我们还是先看看自己上文中 创建的这个 book表 其中四个字段 主键id 数字枚举类型的type 字符串类型name 字符串类型 description 我们打开idea 找到上

    2024年02月09日
    浏览(37)
  • SSMP整合综合案例【SpringBoot的基本增删改查】

    实体类开发————使用Lombok快速制作实体类 Dao开发————整合MyBatisPlus,制作数据层测试 Service开发————基于MyBatisPlus进行增量开发,制作业务层测试类 Controller开发————基于Restful开发,使用PostMan测试接口功能 Controller开发————前后端开发协议制作 页面开发

    2024年02月09日
    浏览(29)
  • SpringBoot实现SSMP整合

    1、Spring 整合 JUnit 核心注解有两个: @RunWith(SpringJUnit4ClassRunner.class) 是设置Spring专用于测试的类运行器(Spring程序执行程序有自己的一套独立的运行程序的方式,不能使用JUnit提供的类运行方式) @ContextConfiguration(classes = SpringConfig.class) 是用来设置Spring核心配置文件或配置类的

    2024年02月07日
    浏览(43)
  • SpringBoot整合SSMP小demo

    spring web,mybatis,mysql勾选 加入mp和druid,依赖见SpringBoot基础认识_阳光明媚UPUP的博客-CSDN博客 写个数据表,写个domain包实体类。  写个mappr包接口@Mapper生成实现类,继承mp  新增报错 //mybatis-plus默认生成的id的方式为自己自订的雪花算法 //而数据库提供的id自增的方法  yml中配

    2024年02月14日
    浏览(25)
  • [SpringBoot系列]SpringBoot如何整合SSMP

    SpringBoot之所以好用,就是它能方便快捷的整合其他技术,这里我们先介绍四种技术的整合: 整合JUnit 整合MyBatis 整合MyBatis-Plus 整合Druid ​ SpringBoot技术的定位用于简化开发,再具体点是简化Spring程序的开发。所以在整合任意技术的时候,如果你想直观感触到简化的效果,你必

    2023年04月23日
    浏览(26)
  • 【案例实战】Java整合hudi-client 0.11.1

    1.Linux部署hudi环境 (1)安装maven-3.5.4、jdk1.8环境 (2)下载Hudi源码包 (3)配置Maven镜像,在maven包下conf目录下setting.xml文件 (4)编译hudi源码包 (5)编译成功后,进入hudi-cli,执行./hudi-cli.sh目录测试 (6)安装HDFS (7)安装Spark 3.x 2.java整合hudi (1)创建maven工程添加依赖 (

    2024年02月07日
    浏览(25)
  • Vue2中给对象添加新属性界面不刷新

    Vue2.x的响应式 实现原理 对象类型:通过 Object.defineProperty() 对属性的读取、修改进行拦截(数据劫持)。 数组类型:通过重写更新数组的一系列方法来实现拦截。(对数组的变更方法进行了包裹)。 存在问题 新增 属性、 删除 属性, 界面不会更新。 直接通过 下标修改 数组

    2024年02月07日
    浏览(29)
  • vue用js 添加水印

    2024年02月22日
    浏览(35)
  • 【项目实战】一、Spring boot整合JWT、Vue案例展示用户鉴权

    【项目实战】Spring boot整合JWT、Vue案例展示用户鉴权 【微服务实战】JWT

    2024年02月09日
    浏览(36)
  • Vue成绩案例实现添加、删除、显示无数据、添加日期、总分均分以及数据本地化等功能

    ✅✅✅通过本次案例实现 添加、删除、显示无数据、添加日期、总分均分以及数据本地化等功能。 准备成绩案例模板,我们需要在这些模板上面进行功能操作。 🍻🍻🍻 添加添加思路: ①、获取科目 和 分数 ②、给添加按钮注册点击事件 ③、给list数组添加一个对象 ④、

    2024年02月16日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包