Vue要素はテーブルの追加、削除、データの変更を実装します

Vue要素はテーブルの追加、削除、データの変更を実装します

この記事では、テーブル内のデータを追加、削除、変更するためのvue要素の具体的なコードを参考までに共有します。具体的な内容は次のとおりです。

ここでは、ポップアップ ボックスを使用してこの機能を実装します。別の方法としては、元のベースで直接変更する方法があります。

効果は以下のとおりです。

表の表:

<el-table :data="テーブルデータ" スタイル="幅: 100%">
  <el-table-column prop="date" label="日付" width="180"></el-table-column>
  <el-table-column prop="name" label="姓名" width="180"></el-table-column>
  <el-table-column prop="address" label="住所"></el-table-column>
  <el-table-column label="操作">
    <テンプレート スロット スコープ="スコープ">
      <!-- 編集をクリックすると、テーブルデータを編集するための編集ページに入ります -->
      <el-button size="small" @click="handleEdit(scope.$index, scope.row)">編集</el-button>
      <el-button size="small" type="danger" @click="handleDelete(scope.$index, scope.row)">削除</el-button>
    </テンプレート>
  </el-table-column>
</el-table>

ポップアップボックスの設定:

<!-- 以下は、追加ボタンをクリックしたときに表示されるポップアップ ボックスを設定するために使用されます。テーブルをネストして、ポップアップ テーブル情報を表示できます。次の :visible.sync を使用して、表示するかどうかを制御します -->
<!-- 設定した値は内部にバインドされます。入力後、新しい値をページ上のすべてのデータに挿入します-->
<el-dialog title="ユーザー情報" :visible.sync="dialogFormVisible">
  <!-- el-dialog 内に el-form をネストしてポップアップ テーブルの効果を実現 -->
  <el-form :model="フォーム">
    <el-form-item label="住所" :label-width="フォームラベルの幅">
      <el-input v-model="form.address" オートコンプリート="オフ"></el-input>
    </el-form-item>
    <el-form-item label="名前" :label-width="フォームラベルの幅">
      <el-input v-model="フォーム名" オートコンプリート="オフ"></el-input>
    </el-form-item>
    <el-form-item label="日付" :label-width="フォームラベルの幅">
      <el-日付ピッカー
        v-model="フォーム.date"
        タイプ="日付"
        placeholder="日付を選択"
        値の形式="yyyy-MM-dd"
      </el-date-picker>
    </el-form-item>

    <el-form-item label="性別" :label-width="フォームラベルの幅">
      <el-select v-model="form.region" placeholder="性別">
        <el-option label="男性" value="男性"></el-option>
        <el-option label="女" value="女"></el-option>
      </el-select>
    </el-form-item>
  </el-form>
  <div スロット="フッター" クラス="ダイアログ フッター">
    <el-button @click="cancel">キャンセル</el-button>
    <!-- 更新をトリガーする方法を設定します -->
    <el-button type="primary" @click="update">OK</el-button>
  </div>
</el-ダイアログ>

完全なコードは次のとおりです。

<テンプレート>
  <div class="basetable" v-loading="読み込み中" 要素-loading-text="読み込み中">
    <!-- v-loading 設定の読み込み中 -->
    <div class="selectMenu">
      <el-date-picker v-model="value6" type="daterange" placeholder="日付範囲を選択"></el-date-picker>
      <!-- クリックすると追加メソッドがトリガーされます-->
      <el-button type="primary" @click="add">追加</el-button>
    </div>
    <div class="tableMain">
      <el-table :data="テーブルデータ" スタイル="幅: 100%">
        <el-table-column prop="date" label="日付" width="180"></el-table-column>
        <el-table-column prop="name" label="姓名" width="180"></el-table-column>
        <el-table-column prop="address" label="住所"></el-table-column>
        <el-table-column label="操作">
          <テンプレート スロット スコープ="スコープ">
            <!-- 編集をクリックすると、テーブルデータを編集するための編集ページに入ります -->
            <el-button size="small" @click="handleEdit(scope.$index, scope.row)">編集</el-button>
            <el-button size="small" type="danger" @click="handleDelete(scope.$index, scope.row)">削除</el-button>
          </テンプレート>
        </el-table-column>
      </el-table>
    </div>
    <div class="page">
      <el-ページネーション
        @size-change="ハンドルサイズ変更"
        @current-change="現在の変更を処理する"
        :current-page.sync="現在のページ3"
        :ページサイズ="100"
        レイアウト="前へ、ページャー、次へ、ジャンパー"
        :合計= "1000"
      </el-pagination> ...
    </div>
    <!-- 以下は、追加ボタンをクリックしたときに表示されるポップアップ ボックスを設定するために使用されます。テーブルをネストして、ポップアップ テーブル情報を表示できます。次の :visible.sync を使用して、表示するかどうかを制御します -->
    <!-- 設定した値は内部にバインドされます。入力後、新しい値をページ上のすべてのデータに挿入します-->
    <el-dialog title="ユーザー情報" :visible.sync="dialogFormVisible">
      <!-- el-dialog 内に el-form をネストしてポップアップ テーブルの効果を実現 -->
      <el-form :model="フォーム">
        <el-form-item label="住所" :label-width="フォームラベルの幅">
          <el-input v-model="form.address" オートコンプリート="オフ"></el-input>
        </el-form-item>
        <el-form-item label="名前" :label-width="フォームラベルの幅">
          <el-input v-model="フォーム名" オートコンプリート="オフ"></el-input>
        </el-form-item>
        <el-form-item label="日付" :label-width="フォームラベルの幅">
          <el-日付ピッカー
            v-model="フォーム.date"
            タイプ="日付"
            placeholder="日付を選択"
            値の形式="yyyy-MM-dd"
          </el-date-picker>
        </el-form-item>

        <el-form-item label="性別" :label-width="フォームラベルの幅">
          <el-select v-model="form.region" placeholder="性別">
            <el-option label="男性" value="男性"></el-option>
            <el-option label="女" value="女"></el-option>
          </el-select>
        </el-form-item>
      </el-form>
      <div スロット="フッター" クラス="ダイアログ フッター">
        <el-button @click="cancel">キャンセル</el-button>
        <!-- 更新をトリガーする方法を設定します -->
        <el-button type="primary" @click="update">OK</el-button>
      </div>
    </el-ダイアログ>
  </div>
</テンプレート>

<script type="text/ecmascript-6">
エクスポートデフォルト{
  データ() {
    戻る {
      読み込み中: true、
      // テーブルデータ tableData: [
        {
          日付: "2017-05-01",
          名前:「兵士76」
          地域:「男性」、
          住所:「キングスアベニュー」
          市: ""
        },
        {
          日付: "2017-05-02",
          名前:「ゲンジ」
          地域:「男性」、
          住所:「ネパール」、
          市: ""
        },
        {
          日付: "2017-05-03",
          名前:「ブラックリリー」
          地域:「女性」、
          住所:「ヴォルスカヤ工業団地」
          市: ""
        },
        {
          日付: "2017-05-04",
          名前:「トレーサー」、
          地域:「女性」、
          住所:「キングスアベニュー」
          市: ""
        },
        {
          日付: "2017-05-03",
          名前:「ザリヤ」
          地域:「女性」、
          住所:「ヴォルスカヤ工業団地」
          市: ""
        },
        {
          日付: "2017-05-03",
          名前:「ゼニヤッタ」
          地域:「男性」、
          住所:「ネパール」、
          市: ""
        },
        {
          日付: "2017-05-03",
          名前: 「ハンゾー」
          地域:「女性」、
          住所: "Huamura",
          市: ""
        }
      ]、
      // 都市選択データ cityList: [
        { 名前: "キングス・ロウ" },
        { 名前: "ネパール" },
        { 名前: "ヴォルスカヤ工業地帯" },
        { 名前: "Huamura" },
        { 名前: "ネパール" },
        { 名前: "ムーンベース" }
      ]、
      ダイアログフォーム表示: false、
      フォームラベル幅: "80px",
      // フォームを追加するときに値をバインドするフォームを設定します: {},
      値6: "",
      現在のページ3: 1,
      現在のインデックス: ""
    };
  },
  作成された() {
    // 読み込みアニメーションを 1.5 秒間表示するためのコールバック関数を設定します setTimeout(() => {
      this.loading = false;
    }, 1500);
  },
  メソッド: {
    ショータイム() {
      this.$alert(this.value6, "開始時間と終了時間", {
        confirmButtonText: "確認",
        コールバック: アクション => {
          this.$メッセージ({
            タイプ: "情報",
            メッセージ: 「表示されました」
          });
        }
      });
    },
    // データを追加する方法は、関数を追加するためにいくつかの値を個別に設定することです。これらの値はオブジェクトに設定され、新しく追加されたオブジェクトが合計データに挿入されますadd() {
      this.form = {
        日付: ""、
        名前: ""、
        地域: ""、
        住所: ""
      };
      // ボタンをクリックした後に表示されるダイアログ ボックスを設定します。this.dialogFormVisible = true;
    },
    アップデート() {
      // this.form.date = 再フォーマット(this.form.date);
      // HTML で日付形式を設定できます// 合計データに追加した情報を送信します this.tableData.push(this.form);
      this.dialogFormVisible = false;
    },
    ハンドル編集(インデックス、行) {
      // データを実現するにはデータのインデックスを渡します echo this.form = this.tableData[index];
      this.currentIndex = インデックス;
      //ダイアログ ボックスの可視性を設定します。this.dialogFormVisible = true;
    },
    handleDelete(インデックス、行) {
      // コンソールに似た関数を設定します。type this.$confirm("ファイルを完全に削除します。続行しますか?", "Prompt", {
        confirmButtonText: "確認",
        cancelButtonText: 「キャンセル」、
        タイプ: 「警告」
      })
        .then(() => {
          // 対応するインデックス位置のデータを削除します。バックグラウンドにデータを削除するように要求する行を設定できます。this.tableData.splice(index, 1);
          this.$メッセージ({
            タイプ: "成功",
            メッセージ: 「正常に削除されました!」
          });
        })
        .catch(() => {
          this.$メッセージ({
            タイプ: "情報",
            メッセージ: 「削除されました」
          });
        });
    },
    キャンセル() {
      // キャンセルする場合は、ダイアログ ボックスを非表示に設定します。this.dialogFormVisible = false;
    },
    ハンドルサイズ変更(val) {
      console.log(`ページあたり${val}項目`);
    },
    現在の変更を処理する(val) {
      console.log(`現在のページ: ${val}`);
    }
  }
};
</スクリプト>
<スタイル lang="scss">
.ベーステーブル{
  .tableMain{
    マージン: {
      上: 10px;
    }
  }
  .ページ {
    フロート: 左;
    マージン: {
      上: 10px;
    }
  }
}
</スタイル>

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Vueはテーブルデータの追加、削除、変更、クエリを実装します

<<:  Dockerの急速な拡張の高度な方法

>>:  CentOS7 は yum を使用して mysql 8.0.12 をインストールします

推薦する

Windows での MySQL 8.X インストール チュートリアル

以前は MySQL 5.7 を使用していましたが、MySQL にいくつか新しい機能が追加されたため、...

Dockerはホスト間のネットワーク通信を実現するためにMacvlanを導入する

基本的な概念: Macvlanの動作原理: Macvlan は、Linux カーネルでサポートされて...

Vue でメニュー権限制御を実装するためのサンプルコード

バックエンド管理システムで作業している場合、通常、メニュー権限制御に関連する問題に遭遇します。もちろ...

プレーンな JS オブジェクトの代わりに Map を使用する場合

目次1. マップは任意のタイプのキーを受け入れます2. マップにはキー名に関する制限はありません3....

Vue+js はビデオのフェードインとフェードアウト効果を実現します

Vue+jsはビデオのフェードインとフェードアウトを実現します。参考までに、具体的な内容は次のとおり...

html オプション 無効 選択 選択 無効 オプションの例

コードをコピーコードは次のとおりです。 <選択> <オプション値="&q...

MySQL は SQL ステートメントの最新のレコードをクエリします (最適化)

最悪の選択肢は、結果を時間順に並べ替えて最初のものを取ることです。 *から選択 ここで、create...

純粋な CSS カスタム複数行省略記号の問題 (原理から実装まで)

テキストオーバーフローを表示するにはどうすればいいですか? どのようなニーズがありますか?単一行です...

CSS属性のデフォルト値width: autoとwidth: 100%の違いの詳細な説明

幅: 自動子要素(コンテンツ+パディング+境界線+余白を含む)は、親要素のコンテンツ領域全体を埋めま...

HTML タイトルに二重引用符を追加する方法

<a href="https://www.jb51.net/" title...

LinuxでIPアドレスが表示されない問題の解決方法

目次序文解決:ステップ1ステップ2序文環境: VMware Workstation 上に Linux...

MySQLデータベースのリアルタイムバックアップの知識ポイントを詳しく解説

序文リアルタイムのデータベース バックアップの必要性は非常に一般的です。MySQL 自体はレプリケー...

xshellを使用してLinuxサーバーに接続する

xshellを使用してLinuxに接続する利点Windows環境でLinuxを直接操作できるインター...

MySql8.0 のトランザクション分離レベルエラーの問題を解決する

目次MySql8.0 トランザクション分離レベルエラーの表示質問コマンドは次のように変更されますMy...

Robots.txtの詳細な紹介

Robots.txt はプレーンテキスト ファイルであり、Web サイト管理者は、ロボットによるアク...