美文网首页
硬撸vue element 系列一增删查改

硬撸vue element 系列一增删查改

作者: 迷茫_小青年 | 来源:发表于2020-05-02 00:42 被阅读0次

1、增

    <el-button 
      class="filter-item" 
      style="margin-left: 1096px;" 
      type="primary" 
      icon="el-icon-edit" @click="addFormVisible = true"
    >
      添加
    </el-button>

首先增加一个“添加”按钮。
@click 是点击事件,addFormVisible = true 可以理解为打开一个对话框,对话框里是我们需要添加的表单。
整体就是点击添加按钮,打开一个对话框,对话框里是需要添加的表单信息。

<el-dialog 
      title="添加信息" 
      :visible.sync="addFormVisible"
      @close="cleanData"
    >
    <el-form 
      :model="addform"
      :rules="addFormRules"
      ref="addformref" 
      label-position="left" 
      label-width="70px" 
      style="width: 400px; margin-left:50px;"
    >
      <el-form-item label="名字" :label-width="formLabelWidth" prop="name">
        <el-input v-model="addform.name" autocomplete="off"></el-input>
      </el-form-item>

      <el-form-item label="性别" :label-width="formLabelWidth" prop="gender">
        <el-select v-model="addform.gender" placeholder="性别">
          <el-option label="男" value="男"></el-option>
          <el-option label="女" value="女"></el-option>
        </el-select>
      </el-form-item>
    </el-form>

    <div slot="footer" class="dialog-footer">
      <el-button @click="addFormVisible = false">取 消</el-button>
      <el-button type="primary" @click="validateAddForm('addformref')">确 定</el-button>
    </div>
    </el-dialog>

这部分描述了,表单的样子。
首先描述一个对话框el-dialog,:visible.sync 可以理解为绑定的名字,要和上面click事件中的一致,不然点添加按钮没反应,弹不出来东西。另外注意关键字前面的冒号。@close事件是用来清理提交数据的,我们暂且不说。

el-from 就对话框里的表单。model是表单的数据对象,rules是对表单的验证规则,ref也是用来清除/验证表单数据必要属性,其他的是位置样式

获取表单输入数据的总要属性是prop 。
输入框中的addform.name 意思就将输入内容addform.name的值。
另外一个同理。
两点击事件,一个是确定,一个取消。

2、修改
修改数据有一个难点就是,点击修改的时候要获取已经填写好的数据。然后在这个基础上再进行编辑。

<el-table-column label="操作">
      <template slot-scope="scope">
        <el-button size="mini" @click="showEditData(scope.row)">
          编辑
        </el-button>
        <el-button slot="reference" size="mini" type="danger" @click="delData(scope.row)">
          删除
        </el-button>
      </template>
    </el-table-column>

点击编辑的事件是把当前的数据传给showEditData这个方法。

showEditData(row) {
        this.editform = Object.assign(this.addform, row) //this.form 获取原来行的内容
        this.editFormVisible = true
      }

显示编辑数据,打开editFormVisible 对话框,然后描述编辑的表单。

<el-dialog 
      title="编辑信息" 
      :visible.sync="editFormVisible"
    >
    <el-form 
      :model="editform"
      :rules="editFormRules"
      ref="editformref"
      label-position="left" 
      label-width="70px" 
      style="width: 400px; margin-left:50px;"
    >
      <el-form-item label="名字" :label-width="formLabelWidth" prop="name">
        <el-input v-model="editform.name" autocomplete="off"></el-input>
      </el-form-item>

      <el-form-item label="性别" :label-width="formLabelWidth" prop="gender">
        <el-select v-model="editform.gender" placeholder="性别">
          <el-option label="男" value="男"></el-option>
          <el-option label="女" value="女"></el-option>
        </el-select>
      </el-form-item>
    </el-form>

    <div slot="footer" class="dialog-footer">
      <el-button @click="editFormVisible = false">取 消</el-button>
      <el-button type="primary" @click="validateEditForm('editformref')">确 定</el-button>
    </div>
    </el-dialog>

最后点确定以后,验证编辑表单数据。提交给后端。

3、删除、查询

查询没是可说的最简单接口。直接查询后端数据即可。

说下删除,删除数据唯一凭证就是id,也就是说数据没写入一条进入数据库,数据库会自增id

这个id虽然在页面上不显示,但是getData数据的时候一定要给前端返回。这样前端才能知道,要删除的数据id是啥。

    <el-table-column label="操作">
      <template slot-scope="scope">
        <el-button size="mini" @click="showEditData(scope.row)">
          编辑
        </el-button>
        <el-button slot="reference" size="mini" type="danger" @click="delData(scope.row)">
          删除
        </el-button>
      </template>
    </el-table-column>
delData(row) {
        //console.log(this.row)
        this.$confirm('真的想删除吗?', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          axios.post(apis + '/delete/', {id: row.id})
          .then(response => {
            this.$notify({
              title: 'Success',
              message: 'Deleted Successfully',
              type: 'success',
              duration: 2000
            })
            this.getData()  //添加完毕后获取最新信息
          })
        }).catch(error => {
          console.log(error)
        })
      }

小技巧是,添加,编辑或是删除完数据以后,通常需要刷新以后,才能展现新的数据,我们可以在方法中加入this.getData() 就可以实现,添加、删除 后自动刷新数据,展示最新数据。

另外this.$confirm 是删除确认功能,避免误操作。

相关文章

网友评论

      本文标题:硬撸vue element 系列一增删查改

      本文链接:https://www.haomeiwen.com/subject/krxhghtx.html