Vue で element-ui を使用してクリック イベントをボタンにバインドし、ボタンがクリックされたときにダイアログ ボックスがポップアップするようにします。

1. 要件の説明

ボタンをクリックすると、ダイアログ ボックスがポップアップ表示され、ダイアログ ボックスにデータを入力して送信できます。[キャンセル] をクリックすると、ダイアログ ボックスが閉じます。

2. 機能実現

1. ボタンを作成する

要素のdivにボタンを見つけるためのコードを入れます

    <el-row>
        <el-button type="primary" plain>新增</el-button>
    </el-row>

2. ダイアログの作成

要素内のダイアログ ボックスに対応するコードを見つけて、そのコードを対応する位置に貼り付けます。

3. ダイアログボックスとボタンのバインド

ダイアログ ボックスに関連付けられたバインド イベントをボタンに追加することで、ボタンをクリックしたときにダイアログ ボックスをポップアップできます。

上の図の最初の行をクリックして開きます

@click="dialogVisible = true"

 ボタン コンポーネントのコード ブロックに配置します。つまり、ボタンを作成するコードは次のようになります。

<el-row>
        <el-button type="primary" plain  @click="dialogVisible = true">新增</el-button>
    </el-row>

3. ダイアログフォームの修正

ダイアログ ボックスの内容を変更して、必要な内容にします

まず、次のコード セグメントを削除します。

 次に、要素に移動して対応するフォームのコードを見つけて貼り付け、フォーム コードの data() の return メソッドを変更 (名前の変更、メンバー変数の変更) し、:model と v- <el-form-item> のモデル名を変更します (名前は、変更した戻り値のメソッドと一致する必要があります)

 

4. [今すぐ作成] をクリックしてフォームを送信し、[キャンセル] をクリックしてダイアログ ボックスを閉じます。

次のコードを変更します。

 

に変更:

            <el-form-item>
                <el-button type="primary" @click="addBrand">立即创建</el-button>
                <el-button @click="dialogVisible = false">取消</el-button>
            </el-form-item>


            <!--新增按钮提交-->
            addBrand() {
                console.log(this.addForm);
            }

 4.「ステータス」スイッチスイッチによって送信されたタイプを変更します

上記の作業が完了すると、フォームは完全に機能するフォームの送信とキャンセルの機能を既に認識しており、ダイアログ ボックスは消えます. ただし、この時点で、Switch スイッチの送信の種類はわかりません. 0 か 1 が欲しい 、Switch の「状態」のコードブロックを修正する必要がある

要素の下の Switch スイッチで拡張値タイプを見つけます。active-value="100" と inactive-value="0" のコードを確認できます。これらの 2 行のコードを Switch "state" コード ブロックに追加できます。値を変更します

変更後、この時点でのスイッチの「状態」のコードは次のとおりです。

            <el-form-item label="状态">
                <el-switch v-model="addForm.status"
                           active-value="1"
                           inactive-value="0"
                ></el-switch>
            </el-form-item>

5.完全なコード

このようにして、ボタンをクリックするとダイアログボックスがポップアップし、ダイアログボックスにデータを入力して送信し、キャンセルをクリックするとダイアログボックスが閉じられるという機能を実現できます。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
  .el-table .warning-row {
    background: oldlace;
  }

  .el-table .success-row {
    background: #f0f9eb;
  }
    </style>

</head>
<body>
<div id="app">

    <!--搜索表单-->
    <el-form :inline="true" :model="brand" class="demo-form-inline">
        <el-form-item label="当前状态">
            <el-select v-model="brand.status" placeholder="当前状态">
                <el-option label="启用" value="1"></el-option>
                <el-option label="禁用" value="0"></el-option>
            </el-select>
        </el-form-item>
        <el-form-item label="企业名称">
            <el-input v-model="brand.companyName" placeholder="企业名称"></el-input>
        </el-form-item>
        <el-form-item label="品牌名称">
            <el-input v-model="brand.brandName" placeholder="品牌名称"></el-input>
        </el-form-item>

        <el-form-item>
            <el-button type="primary" @click="onSubmit">查询</el-button>
        </el-form-item>
    </el-form>


    <!--第二行的按钮-->
    <el-row>
        <el-button type="danger" plain>批量删除</el-button>
        <el-button type="primary" plain  @click="dialogVisible = true">新增</el-button>
    </el-row>
    <!--点击新增按钮就弹出对话框-->
    <el-dialog
            title="编辑品牌"
            :visible.sync="dialogVisible"
            width="30%"
            >

        <!--弹出的对话框的内容-->
        <el-form ref="form" :model="addForm" label-width="80px">
            <el-form-item label="品牌名称">
                <el-input v-model="addForm.brandName"></el-input>
            </el-form-item>
            <el-form-item label="企业名称">
                <el-input v-model="addForm.companyName"></el-input>
            </el-form-item>
            <el-form-item label="排序">
                <el-input v-model="addForm.ordered"></el-input>
            </el-form-item>
            <el-form-item label="活动形式">
                <el-input type="textarea" v-model="addForm.description"></el-input>
            </el-form-item>
            <el-form-item label="状态">
                <el-switch v-model="addForm.status"
                           active-value="1"
                           inactive-value="0"
                ></el-switch>
            </el-form-item>
            <el-form-item>
                <el-button type="primary" @click="addBrand">立即创建</el-button>
                <el-button @click="dialogVisible = false">取消</el-button>
            </el-form-item>
        </el-form>
    </el-dialog>


    <!--表格-->
    <template>
        <el-table
                :data="tableData"
                style="width: 100%"
                :row-class-name="tableRowClassName"
                @selection-change="handleSelectionChange"
        >
            <el-table-column
                    type="selection"
                    width="55">
            </el-table-column>
            <el-table-column
                    type="index"
                    width="50">
            </el-table-column>
            <el-table-column
                    prop="brandName"
                    align="center"
                    label="品牌名称"
                    >
            </el-table-column>
            <el-table-column
                    prop="companyName"
                    align="center"
                    label="企业姓名"
                    >
            </el-table-column>
            <el-table-column
                    prop="ordered"
                    align="center"
                    label="排序">
            </el-table-column>
            <el-table-column
                    prop="status"
                    align="center"
                    label="当前状态">
            </el-table-column>
            <el-table-column
                    align="center"
                    label="操作">
                <el-row>
                    <el-button type="primary">修改</el-button>
                    <el-button type="danger">删除</el-button>
                </el-row>
            </el-table-column>
        </el-table>
    </template>


</div>


<script src="js/vue.js"></script>
<script src="element-ui/lib/index.js"></script>
<link rel="stylesheet" href="element-ui/lib/theme-chalk/index.css">

<script>
    new Vue({
        el: "#app",
        methods: {
            tableRowClassName({row, rowIndex}) {
            if (rowIndex === 1) {
            return 'warning-row';
            } else if (rowIndex === 3) {
             return 'success-row';
            }
            return '';
            },

            //复选框选中后执行的方法
            handleSelectionChange(val) {
                this.multipleSelection = val;
                console.log(this.multipleSelection)
            },


             <!--查询按钮提交-->
              onSubmit() {
                console.log(this.brand);
              },

              <!--新增按钮提交-->
              addBrand() {
                console.log(this.addForm);
              }

    },
    data() {
      return {

      <!--弹出的对话框的内容-->
      addForm: {
          brandName:'',
          companyName:'',
          id:'',
          ordered:'',
          description:'',
          status:'',
      },

        dialogVisible: false,

         multipleSelection: [],

        tableData: [{
          brandName: '小米',
          companyName: '小米科技有限公司',
          ordered: '100',
          status:'1',
        }, {
          brandName: '小米',
          companyName: '小米科技有限公司',
          ordered: '100',
          status:'1',
        }, {
          brandName: '小米',
          companyName: '小米科技有限公司',
          ordered: '100',
          status:'1',
        }, {
          brandName: '小米',
          companyName: '小米科技有限公司',
          ordered: '100',
          status:'1',
        }],


        <!--搜索表单-->
        brand: {
          status: '',
          companyName: '',
          brandName: '',
        }

      }
    }
    })

</script>

</body>
</html>

おすすめ

転載: blog.csdn.net/m0_70807708/article/details/126363610