欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue數(shù)據(jù)增刪改查與表單驗(yàn)證的實(shí)現(xiàn)流程介紹

 更新時間:2022年10月19日 08:50:01   作者:顧輕舟。  
這篇文章主要介紹了Vue數(shù)據(jù)增刪改查與表單驗(yàn)證的實(shí)現(xiàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

1. 準(zhǔn)備工作

后臺服務(wù)接口,對書本的增刪改查操作

2. 彈出窗口

進(jìn)入ElementUi官網(wǎng), 找到Dialog對話框,可以參考“嵌套表單的dialog”實(shí)現(xiàn)。

該步驟先實(shí)現(xiàn)彈出窗口的前端邏輯,并不會調(diào)用后臺接口服務(wù)進(jìn)行實(shí)際的業(yè)務(wù)操作。

BookList.vue

<!--
彈出窗口:增加和修改書本信息共用一個彈出窗口,需要根據(jù)用戶的選擇動態(tài)的設(shè)置彈出窗口的標(biāo)題
:tile  通過綁定值的方式設(shè)置dialog的標(biāo)題
:visible.sync  控制彈出窗口的顯示或隱藏,.sync同步修飾符
@close="closeBookForm",設(shè)置窗口關(guān)閉時調(diào)用的處理函數(shù),可用于清空表單
:model="bookForm":用于定義表單對應(yīng)的model,具體model的定義可見data部分。
v-show="optiontype == 'update'" 通過操作類型控制是否顯示書本編號字段,如果當(dāng)前操作類型為
       新增,則不用顯示,書本編號在數(shù)據(jù)表中是自增的。
:label-width="formLabelWidth" 統(tǒng)一定義標(biāo)簽的寬度。
:style="{width: formEleWidth}"  統(tǒng)一定義form元素的寬度。
-->
<el-dialog :title="dialogName" :visible.sync="dialogFormVisible" @close="closeBookForm" width="500px">
  <el-form :model="bookForm">
    <el-form-item v-show="optiontype == 'update'" label="編號" :label-width="formLabelWidth">
      <el-input v-model="bookForm.id" autocomplete="off" :style="{width: formEleWidth}"></el-input>
    </el-form-item>
    <el-form-item label="書名" :label-width="formLabelWidth">
      <el-input v-model="bookForm.bookname" autocomplete="off" :style="{width: formEleWidth}"></el-input>
    </el-form-item>
    <el-form-item label="價格" :label-width="formLabelWidth">
      <el-input v-model="bookForm.price" autocomplete="off" :style="{width: formEleWidth}"></el-input>
    </el-form-item>
    <el-form-item label="類型" :label-width="formLabelWidth">
      <el-select v-model="bookForm.booktype" placeholder="選擇類型" :style="{width:formEleWidth}">
        <el-option label="名著" value="mz"></el-option>
        <el-option label="小說" value="xs"></el-option>
      </el-select>
    </el-form-item>
  </el-form>
  <div slot="footer" class="dialog-footer">
    <el-button @click="dialogFormVisible = false">取 消</el-button>
    <el-button type="primary" @click="dialogFormVisible = false">確 定</el-button>
  </div>
</el-dialog>

在數(shù)據(jù)表格中添加“編輯”“刪除”功能連接。(在element-ui官方demo -> table組件中,有如何加入刪除,編輯等按鈕的示例)

    <!--表格-->
    <el-table :data="books" style="width: 100%;" :border="true" max-height="530">
      <el-table-column prop="id" label="編號" min-width="40" align="center"></el-table-column>
      <el-table-column prop="bookname" label="名稱" min-width="100" align="center"></el-table-column>
      <el-table-column prop="price" label="價格" min-width="70" align="center"></el-table-column>
      <el-table-column prop="booktype" label="類型" min-width="70" align="center"></el-table-column>
      <!-- “編輯”“刪除”功能連接 -->
      <el-table-column label="操作">
        <!--
        在<template>上使用特殊的slot-scope 特性,可以接收傳遞給插槽的prop
        slot-scope:類似將每一行的row對象封裝到槽中,之后直接從scope中獲取
        row對象信息和行索引index信息即可
        -->
        <template slot-scope="scope">
          <el-button size="mini" @click="handleEdit(scope.row)">編輯</el-button>
          <el-button size="mini" type="danger" @click="handleDelete(scope.row)">刪除</el-button>
        </template>
      </el-table-column>
    </el-table>

script部分:

export default {
name: 'BookList',
data: function() {
  return {
    bookname: '',
    books: [],
    total: 0,
    rows: 10,
    page: 1,
    //控制對話框是否顯示,默認(rèn)是隱藏狀態(tài)
    dialogFormVisible: false,
    //統(tǒng)一控制標(biāo)簽的寬度
    formLabelWidth: '40px',
    //統(tǒng)一控制表單元素的寬度
    formEleWidth: '400px',
    //對話框標(biāo)題,默認(rèn)為新增,如果是點(diǎn)擊修改按鈕打開對話框,則標(biāo)題應(yīng)為修改。
    dialogName:'新增書本',
    //操作類型,默認(rèn)為添加,如果是點(diǎn)擊修改打開對話框,則操作類類型應(yīng)變?yōu)樾薷?
    //該變量用于控制是否顯示書本編號字段,當(dāng)操作類型為新增時不需顯示(書本編號數(shù)據(jù)表字段為自增)
    //當(dāng)操作類型為修改時,需要顯示。
    optiontype: 'add',
    //定義表單對應(yīng)的model
    bookForm: {
      id: '',
      bookname: '',
      price:null,
      booktype: ''
    }
  }
},
methods: {
  qry: function() {
    let url = this.axios.urls.BOOKMSG_BOOKINFO_REQ;
    this.axios.post(url, {
      bookname: this.bookname,
      page: this.page,
      rows: this.rows
    }).then(resp => {
      console.log(resp);
      this.books = resp.data.data;
      this.total = resp.data.total;
    }).catch(error => {
      console.log(error);
    });
  },
  //當(dāng)每頁顯示的記錄數(shù)發(fā)生變化時,設(shè)置當(dāng)前頁碼為1,執(zhí)行查詢。
  handleSizeChange: function(rows) {
    this.rows = rows;
    this.page = 1;
    this.qry();
  },
  //當(dāng)前頁碼發(fā)生變化時,執(zhí)行查詢
  handleCurrentChange: function(page) {
    this.page = page;
    this.qry();
  },
  //當(dāng)關(guān)閉對話框時,該方法用于清空表單
  closeBookForm: function() {
    this.bookForm.id=null;
    this.bookForm.bookname = null;
    this.bookForm.booktype = null;
    this.bookForm.price = null;
  },
  //打開對話框,將對話框標(biāo)題設(shè)置為新增,操作類型設(shè)置為'add'
  addBook: function() {
    this.dialogName = '新增書本信息';
    this.dialogFormVisible = true;
    this.optiontype = 'add';
  },
  //打開對話框,將對話框標(biāo)題設(shè)置為修改,操作類型設(shè)置為'update',
  //并使用獲取的待修改的記錄的值設(shè)置對應(yīng)的表單元素
  handleEdit: function(row) {
    this.dialogName = '編輯書本信息';
    this.dialogFormVisible = true;
    this.bookForm.id=row.id;
    this.bookForm.bookname = row.bookname;
    this.bookForm.booktype = row.booktype;
    this.bookForm.price = row.price;
    this.optiontype = 'update';
  },
  //刪除書本記錄
  handleDelete: function(row) {
    console.log("dele  = " + row);
  }
}
}

3. 新增更新功能

1) 在action.js中加入后臺接口配置。配置時按照自己的項(xiàng)目實(shí)際進(jìn)行,不要照抄

   //獲取書本信息
  'BOOKMSG_BOOKINFO_REQ':'/bookMsg/bookAction!getBooks.action',
  //增加書本信息
  'BOOKMSG_BOOKINFO_ADD' : '/bookMsg/bookAction!addBook.action',
  //修改書本信息
  'BOOKMSG_BOOKINFO_UPDATE': '/bookMsg/bookAction!updateBook.action',
  //刪除書本信息
  'BOOKMSG_BOOKINFO_DEL': '/bookMsg/bookAction!delBook.action',
  //VUEX 異步請求后臺數(shù)據(jù)
  'VUE_ASYN_REQ':'/userMsg/vueAsynAction!asynAction.action',

2) 在前端調(diào)用接口, 注意在調(diào)用前請確認(rèn)后臺接口可正常使用

圖一:

圖二:

      //保存書本信息
      saveBook: function() {
        let url = this.axios.urls.BOOKMSG_BOOKINFO_ADD;
        //如果當(dāng)前操作類型為update則需要調(diào)用更新接口
        if (this.optiontype == 'update') {
          url = this.axios.urls.BOOKMSG_BOOKINFO_UPDATE;
        }
        this.axios.post(url, this.bookForm).then(resp => {
          //操作成功,關(guān)閉彈出框,執(zhí)行查詢以便于顯示最新數(shù)據(jù)
          //操作失敗,提示失敗,關(guān)閉彈出框
          if (resp.data.success) {
            this.$message({
              message: resp.data.msg,
              type: 'success'
            });
            this.dialogFormVisible = false;
            this.qry();
          } else {
            this.$message({
              message: resp.data.msg,
              type: 'error'
            });
            this.dialogFormVisible = false;
          }
        }).catch(error => {
        })
      },

4. 刪除功能

      //刪除書本記錄
      handleDelete: function(row) {
        let url = this.axios.urls.BOOKMSG_BOOKINFO_DEL+"?id="+row.id;
        this.axios.delete(url).then(resp => {
          if(resp.data.success) {
            this.$message({
              message: resp.data.msg,
              type:'success'
            });
            this.qry();
          } else {
            this.$message({
              message: resp.data.msg,
              type: 'error'
            });
          }
        }).catch(error => {
          console.log(error);
        })
      }

在刪除之前需求讓用戶確認(rèn)一下是否刪除,這個功能請自行參數(shù)element-ui官方文檔。

5. 表單驗(yàn)證

查看Element-ui官方文檔Form部分

圖一:

如果需要自定義驗(yàn)證規(guī)則,用法如下圖所示:

圖二

        //定義表單驗(yàn)證規(guī)則,validatePrice為自定義驗(yàn)證函數(shù),在下文有具體定義
        rules: {
          bookname: [
            {required: true, message: '請輸入書本名', trigger: 'blur'}
          ],
          price: [
            {required: true, validator: validatePrice, trigger: 'blur' }
          ],
          booktype: [
            {required: true, message: '請輸入書本類型', trigger: 'blur'}
          ]
        }

validatePrice函數(shù)的定義:

      //用于驗(yàn)證訂單金額
      var validatePrice = (rule, value, callback) => {
        if(!value){
          callback(new Error('請輸入訂單金額'));
        } else if (isNaN(value)) {
          callback(new Error('請輸入數(shù)字值'));
        } else {
          callback();
        }
      }

表單驗(yàn)證:

      //保存書本信息
      saveBook: function(formName) {
        let url = this.axios.urls.BOOKMSG_BOOKINFO_ADD;
        //調(diào)用表單驗(yàn)證
        this.$refs[formName].validate((valid) => {
          //如果當(dāng)前操作類型為update則需要調(diào)用更新接口
          if (this.optiontype == 'update') {
            url = this.axios.urls.BOOKMSG_BOOKINFO_UPDATE;
          }
          this.axios.post(url, this.bookForm).then(resp => {
            //操作成功,關(guān)閉彈出框,執(zhí)行查詢以便于顯示最新數(shù)據(jù)
            //操作失敗,提示失敗,關(guān)閉彈出框
            if (resp.data.success) {
              this.$message({
                message: resp.data.msg,
                type: 'success'
              });
              this.dialogFormVisible = false;
              this.qry();
            } else {
              this.$message({
                message: resp.data.msg,
                type: 'error'
              });
              this.dialogFormVisible = false;
            }
          }).catch(error => {
          })
        });
      },

定義驗(yàn)證規(guī)則,及rule

圖三

調(diào)用驗(yàn)證,圖四

通過form表單的ref屬性來清空表單驗(yàn)證信息,圖五

6. 接口文檔

接口文檔需要包含的基本要素:

接口地址:

請求方式:get/post/put/delete等

請求示例:舉例說明如何調(diào)用

請求參數(shù):說明請求參數(shù),及存放的位置,如url,form-data, body raw等等。

返回參數(shù):

正確:說明返回的json數(shù)據(jù)

錯誤:指明不同錯誤的代碼及含義

到此這篇關(guān)于Vue數(shù)據(jù)增刪改查與表單驗(yàn)證的實(shí)現(xiàn)流程介紹的文章就介紹到這了,更多相關(guān)Vue增刪改查內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue中父子組件的值傳遞與方法傳遞

    Vue中父子組件的值傳遞與方法傳遞

    這篇文章主要介紹了Vue中父子組件的值傳遞與方法傳遞,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Vue+Element UI實(shí)現(xiàn)下拉菜單的封裝

    Vue+Element UI實(shí)現(xiàn)下拉菜單的封裝

    這篇文章主要為大家詳細(xì)介紹了Vue+Element UI實(shí)現(xiàn)下拉菜單的封裝代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • vue項(xiàng)目中使用particles實(shí)現(xiàn)粒子背景效果及遇到的坑(按鈕沒有點(diǎn)擊響應(yīng))

    vue項(xiàng)目中使用particles實(shí)現(xiàn)粒子背景效果及遇到的坑(按鈕沒有點(diǎn)擊響應(yīng))

    為了提高頁面展示效果,登錄界面內(nèi)容比較單一的,粒子效果作為背景經(jīng)常使用到,vue工程中利用vue-particles可以很簡單的實(shí)現(xiàn)頁面的粒子背景效果,本文給大家分享在實(shí)現(xiàn)過程中遇到問題,需要的朋友一起看看吧
    2020-02-02
  • Vue實(shí)現(xiàn)預(yù)覽docx/xlsx/pdf等類型文件功能

    Vue實(shí)現(xiàn)預(yù)覽docx/xlsx/pdf等類型文件功能

    這篇文章主要介紹了如何在Vue中實(shí)現(xiàn)docx/xlsx/pdf等類型文件預(yù)覽功能,在實(shí)現(xiàn)過程中,需要注意文件的格式和轉(zhuǎn)換方式,以及插件和組件的使用方法和注意事項(xiàng),需要的朋友可以參考下
    2023-05-05
  • 詳解如何實(shí)現(xiàn)一個簡單的 vuex

    詳解如何實(shí)現(xiàn)一個簡單的 vuex

    本篇文章主要介紹了如何實(shí)現(xiàn)一個簡單的 vuex,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • vue中將網(wǎng)頁打印成pdf實(shí)例代碼

    vue中將網(wǎng)頁打印成pdf實(shí)例代碼

    本篇文章主要介紹了vue中將網(wǎng)頁打印成pdf實(shí)例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • 淺談element中InfiniteScroll按需引入的一點(diǎn)注意事項(xiàng)

    淺談element中InfiniteScroll按需引入的一點(diǎn)注意事項(xiàng)

    這篇文章主要介紹了淺談element中InfiniteScroll按需引入的一點(diǎn)注意事項(xiàng),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • vue內(nèi)點(diǎn)擊url下載文件的最佳解決方案分享

    vue內(nèi)點(diǎn)擊url下載文件的最佳解決方案分享

    這篇文章主要給大家介紹了關(guān)于vue內(nèi)點(diǎn)擊url下載文件的最佳解決方案,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2022-02-02
  • 解決vue prop傳值default屬性如何使用,為何不生效的問題

    解決vue prop傳值default屬性如何使用,為何不生效的問題

    這篇文章主要介紹了解決vue prop傳值default屬性如何使用,為何不生效的問題。具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Vue3獲取和操作DOM元素的項(xiàng)目實(shí)踐

    Vue3獲取和操作DOM元素的項(xiàng)目實(shí)踐

    在Vue3中,有時我們需要直接操作DOM節(jié)點(diǎn),本文主要介紹了Vue3獲取和操作DOM元素的項(xiàng)目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08

最新評論