欢迎光临
我们一直在努力

vue.js基于ElementUI如何封装CRUD的弹框组件

本文小编为大家详细介绍“vue.js基于ElementUI如何封装CRUD的弹框组件”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue.js基于ElementUI如何封装CRUD的弹框组件”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

    开始封装

    原本只是个小功能,但是别的模块也需要用到。

    我的想法就是,把弹框标题,table表头,必填字节,接口请求路径,增删改查CRUD,等等,放在一个json对象里面。通过父组件向子组件传参的方式,展示不同内容,调用不同的接口。

    极大提高了代码的复用性。

    json对象如下所示

      // 示例:
        let example = {
          // 弹框标题
          popTitle: "编辑主题",
          // table
          columnList: [
            {
              prop: "themeName",
              label: "主题名称",
            },
            {
              prop: "themeDescribe",
              label: "主题描述",
            },
          ],
          // 必填的字段
          requiredKeys: ["themeName"],
          tableData: this.themeList,
          // 主键,默认为id
          idKey: "id",
          // 删除的参数名称,默认为ids
          deleteKey: "ids",
          // 批量的参数名称,默认为ids
          batchDeleteKey: "ids",
          // 接口请求路径,增删改查CRUD
          interfaceUrl: {
            add: "/target/addTheme",
            edit: "/target/updateTheme",
            delete: "/target/deleteTheme",
            // 批量删除
            batchDelete: "/target/deleteTheme",
            list: "/target/themelist",
          },
        };

    table表头作为列表传入,数据结构如下

     columnList: [
        {
          prop: "themeName",
          label: "主题名称",
        },
        {
          prop: "themeDescribe",
          label: "主题描述",
        },
    ],

    在子组件中循环渲染出表头

    <el-table-column
      v-for="(item, index) in columnList"
      :key="index"
      :show-overflow-tooltip="item.showOverflowTooltip || true"
      :align="item.align || 'center'"
      :header-align="item.headerAlign || item.align || 'center'"
      :label="item.label"
      :width="item.width"
    >
      <template slot-scope="scope">
        <span v-if="scope.row.statusBtn === false">{{ scope.row[item.prop] }}</span>
        <el-input
          v-else-if="scope.row.statusBtn === true"
          v-model="scope.row[item.prop]"
          size="mini"
        />
      </template>
    </el-table-column>

    在父组件中调用

    <!-- 编辑主题的弹框 -->
    <edit-table-modal
      ref="editTableModal"
      :visible.sync="editTableModal.show"
      :tableObject="themeTableObject"
      v-if="editTableModal.show"
      @ok="editTableFunction"
    />

    读到这里,这篇“vue.js基于ElementUI如何封装CRUD的弹框组件”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注云搜网行业资讯频道。

    赞(0)
    【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。