最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

1. 準(zhǔn)備工作

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

2. 彈出窗口

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

該步驟先實現(xiàn)彈出窗口的前端邏輯,并不會調(diào)用后臺接口服務(wù)進行實際的業(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,
    //控制對話框是否顯示,默認是隱藏狀態(tài)
    dialogFormVisible: false,
    //統(tǒng)一控制標(biāo)簽的寬度
    formLabelWidth: '40px',
    //統(tǒng)一控制表單元素的寬度
    formEleWidth: '400px',
    //對話框標(biāo)題,默認為新增,如果是點擊修改按鈕打開對話框,則標(biāo)題應(yīng)為修改。
    dialogName:'新增書本',
    //操作類型,默認為添加,如果是點擊修改打開對話框,則操作類類型應(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中加入后臺接口配置。配置時按照自己的項目實際進行,不要照抄

   //獲取書本信息
  '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)用前請確認后臺接口可正常使用

圖一:

圖二:

      //保存書本信息
      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);
        })
      }

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

5. 表單驗證

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

圖一:

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

圖二

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

validatePrice函數(shù)的定義:

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

表單驗證:

      //保存書本信息
      saveBook: function(formName) {
        let url = this.axios.urls.BOOKMSG_BOOKINFO_ADD;
        //調(diào)用表單驗證
        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 => {
          })
        });
      },

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

圖三

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

通過form表單的ref屬性來清空表單驗證信息,圖五

6. 接口文檔

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

接口地址:

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

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

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

返回參數(shù):

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

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

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

相關(guān)文章

  • Vue項目中數(shù)據(jù)的深度監(jiān)聽或?qū)ο髮傩缘谋O(jiān)聽實例

    Vue項目中數(shù)據(jù)的深度監(jiān)聽或?qū)ο髮傩缘谋O(jiān)聽實例

    這篇文章主要介紹了Vue項目中數(shù)據(jù)的深度監(jiān)聽或?qū)ο髮傩缘谋O(jiān)聽實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • vue右鍵菜單的簡單封裝

    vue右鍵菜單的簡單封裝

    這篇文章主要為大家詳細介紹了vue右鍵菜單的簡單封裝,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Vue+Node.js+WebSocket實現(xiàn)即時通訊

    Vue+Node.js+WebSocket實現(xiàn)即時通訊

    本文主要介紹了Vue+Node.js+WebSocket實現(xiàn)即時通訊,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Vue router/Element重復(fù)點擊導(dǎo)航路由報錯問題及解決

    Vue router/Element重復(fù)點擊導(dǎo)航路由報錯問題及解決

    這篇文章主要介紹了Vue router/Element重復(fù)點擊導(dǎo)航路由報錯問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 樣式穿透vue中的scoped詳談

    樣式穿透vue中的scoped詳談

    這篇文章主要為大家介紹了樣式穿透vue中的scoped示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • vue.js組件之間傳遞數(shù)據(jù)的方法

    vue.js組件之間傳遞數(shù)據(jù)的方法

    本篇文章主要介紹了vue.js組件之間傳遞數(shù)據(jù)的方法,組件實例的作用域是相互獨立的,如何傳遞數(shù)據(jù)也成了組件的重要知識點之一,有興趣的可以了解一下
    2017-07-07
  • vue+elementUi實現(xiàn)點擊地圖自動填充經(jīng)緯度以及地點

    vue+elementUi實現(xiàn)點擊地圖自動填充經(jīng)緯度以及地點

    這篇文章主要為大家詳細介紹了vue+elementUi實現(xiàn)點擊地圖自動填充經(jīng)緯度以及地點,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • Vue三層嵌套路由的示例代碼

    Vue三層嵌套路由的示例代碼

    本篇文章主要介紹了Vue三層嵌套路由的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • Vue3中Suspense異步加載組件的問題

    Vue3中Suspense異步加載組件的問題

    在我們?nèi)粘i_發(fā)中,有些組件里面加載非常慢,導(dǎo)致我們路由跳轉(zhuǎn)的時候回出現(xiàn)卡頓情況,這篇文章主要介紹了Vue3:?Suspense異步加載組件,需要的朋友可以參考下
    2023-12-12
  • Vue+Koa2 打包后進行線上部署的教程詳解

    Vue+Koa2 打包后進行線上部署的教程詳解

    這篇文章主要介紹了Vue+Koa2 打包后如何進行線上部署,給大家分享了一些問題及解決方法,需要的朋友可以參考下
    2019-07-07

最新評論

县级市| 叶城县| 大关县| 彭水| 天镇县| 龙陵县| 栾川县| 永济市| 武定县| 崇明县| 沁水县| 金阳县| 天津市| 金乡县| 彰武县| 定边县| 盘山县| 安化县| 禄丰县| 万全县| 扬中市| 钟祥市| 左权县| 永康市| 襄城县| 惠来县| 灵石县| 广平县| 镶黄旗| 兴安盟| 鄂尔多斯市| 义乌市| 信丰县| 宜春市| 祁门县| 班戈县| 晴隆县| 仪陇县| 大新县| 拜城县| 交口县|