Element-uiはテーブル内のセルを直接クリックして編集します

Element-uiはテーブル内のセルを直接クリックして編集します

最近、会社でelementUIを使い始めたため、開発の過程でテーブルのセルを編集する必要が生じました。以下はテーブルを編集可能にする私独自の方法です。ご興味があれば、ぜひ学んでみてください。

成果を達成する

ここに画像の説明を挿入

編集後、対応するテーブルデータフィールドの値も変更されます。コンソールは変更を表示するためにすべてのデータを出力します。

実装コード

1. カスタム編集コンポーネント

<テンプレート>
  <div class="editCell">
    <div class="canEdit" v-if="CanEdit" @click="beginEdit">
      <label v-show="!editStatus">
        <span v-if="this.value!== null && this.value !== undefined && this.value !== ''">{{ value }}{{this.suffix}}</span>
        <span v-else style="padding-left: 100%;padding-top: 100%;"/>
      </ラベル>
      <label v-show="編集ステータス">
        <入力
          タイプ="テキスト"
          クラス="inputClass"
          ref="入力"
          v-on:keyup.13="フォーカスを失う"
          :value="値"
          @blur="フォーカスを失う"
        />
      </ラベル>
    </div>

    <label class="cannotEdit" v-else>
      <span>{{ 値 }}{{ 接尾辞 }}</span>
    </ラベル>
  </div>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
  名前: "EditCell"、
  小道具: {
    /**
     * バインディング値 */
    価値: {
      必須: true
    },
    /**
     * 編集可能? */
    編集可能:
      タイプ: ブール値、
      デフォルト: true
    },
    /**
     * フォーマット関数 */
    フォーマットデータ: {
      タイプ: 関数、
      デフォルト: 値 => {
        戻り値;
      }
    },
    /**
     * イベント編集 */
    編集後: {
      タイプ: 関数、
      デフォルト: () => {}
    },
    /**
     * 最初にフォーマットするかどうか */
    初期化フォーマット: {
      タイプ: ブール値、
      デフォルト: false
    },
    接尾辞: {
      デフォルト: ""
    }
  },
  データ() {
    戻る {
      編集ステータス: false、
      表示データ: "",
      デフォルトデータ: "",
      タイムアウト: null
    };
  },
  メソッド: {
    /**
     * クリックして編集を開始 */
    編集を始める() {
      this.editStatus = true;
      タイムアウトを設定する(() => {
        this.$refs.input.focus();
      }, 1);
    },

    /**
     * @param {event} イベント
     * フォーカスが失われたときに編集状態を閉じてデータを保存します*/
    loseFocus(イベント) {
      値を this.formatData(event.target.value) とします。
      this.editData(値);
      this.closeEditStatus(値);
      this.afterEdit(値);
    },

    /**
     * データを変更する入力イベントを発行する * @param value
     */
    編集データ(値) {
      this.$emit("入力", 値);
    },

    /**
     * 編集状態を閉じる * @param 値
     */
    closeEditStatus(値) {
      this.editStatus = false;
    },
    /**
     * 初期フォーマットデータ */
    初期化データ() {
      newValue を this.formatData(this.value) とします。
      this.$emit("input", newValue);
    }
  },
  マウント() {
    if (this.initFormat) {
      このメソッドは、次のコードで実行されます。
    }
  },
  時計:
    '値': 関数(newVal){
      this.$emit("input", this.formatData(newVal));
    }
  }
};
</スクリプト>

<スタイルスコープ>
.editCell {
  高さ: 100%;
  幅: 100%;
}
.inputClass{
  高さ: 30px;
  幅: 100%;
  背景色: #fff;
  境界線の半径: 4px;
  境界線: 1px 実線 #dcdfe6;
  色: #606266;
  表示: インラインブロック;
  フォントサイズ: 継承;
  行の高さ: 30px;
  アウトライン: 0;
  パディング: 0 15px;
  遷移: 境界線の色 0.2s 立方ベジェ(0.645, 0.045, 0.355, 1);
  オーバーフロー: 表示可能;
  タッチアクション:操作;
  マージン: 0;
}
</スタイル>

ページコール

EditCellを「@/components/EditCell/EditCell」からインポートします。
コンポーネント: { EditCell},

 <el-テーブル列
    v-for="テーブル列内の項目"
      :prop="item.dataIndex"
      :label="アイテムタイトル"
      :width="アイテムの幅"
      :align="アイテム.align"
      :key="アイテムID"
      :fixed="アイテム.fixed"
  >
  	  //ここでカスタム コンポーネントを呼び出します (dataIndex はヘッダー データ内のフィールドであり、ヘッダーの教師に対応する教師名を表示するのと同じです)
      <テンプレート スロット スコープ="スコープ">
          <span v-if="item.dataIndex !== 'batchInvest' && item.dataIndex !== 'remark'">{{scope.row[item.dataIndex]}}</span>
          // データをフォーマットする必要がある場合は、次のように設定できます: format-data="formatFun" formatFun このメソッドは、現在のページのメソッドで定義できます <edit-cell v-else v-model="scope.row[item.dataIndex]" :can-edit="true"/>
      </テンプレート>
      <el-テーブル列
          v-for="item.children 内の item2"
          :prop="item2.データインデックス"
          :label="item2.title"
          :width="item2.width"
          :align="item2.align"
          :key="item2.id"
          :fixed="item2.fixed"
      >
      </el-table-column>
  </el-table-column>

これで、element-ui でセルを直接クリックしてテーブルを編集する方法についての説明は終了です。要素セル編集に関するその他のコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vue 要素 UI テーブル埋め込みプログレスバー機能の実装方法
  • Vue の element-ui フォームまたはテーブル ラベルでの改行の問題について
  • element-uiコンポーネントel-autocompleteの使用の詳細な説明
  • VUE+element-ui ファイルアップロードサンプルコード
  • element-ui に基づく動的スキニングのコードの詳細な説明

<<:  HTML でスタイルを使用して属性を追加する例

>>:  CSS 3.0 テキストホバージャンプ特殊効果コード

推薦する

Javascript で関数のカリー化とデカリー化を実装する方法

関数のカリー化(黒い疑問符の顔)? ? ?カレー(黒い疑問符の顔)? ? ?これは完璧な中国語翻訳で...

MySQLインデックスの簡単な分析

データベース インデックスは、テーブル操作の速度を向上させることを目的としたデータ構造です。高速なラ...

VueはGraphVisを使用して無限に拡張された関係グラフを開発します

1. GraphVis 公式サイトにアクセスして、対応する js をダウンロードします。js の新し...

プロフェッショナルおよび非プロフェッショナルのウェブデザイン

まず、Web ページのスタイルの形成は、主に Web ページのレイアウト設計、ページの色処理、画像と...

正規表現に基づくあいまい文字列置換を実装するMySQLの方法の分析

この記事では、例を使用して、MySQL を使用して正規表現に基づくあいまい文字列置換を実装する方法を...

MySQL データ型の選択原則

目次小さいけれど美しいシンプルにNULL値を避けるデータタイプを選択する手順データ型の紹介1. 文字...

ElementUIカスタムCSSスタイルが有効にならない問題を解決する

例えば、入力ボックスがあります <el-入力 ref="mySearch"...

SeataがMySQL 8バージョンを使用できない問題を解決する方法

考えられる理由: Seata が MySQL 8 をサポートしない主な理由は、接続ドライバーがバージ...

ウェブデザイン経験

<br />著者はかつてWebデザインの初心者でしたが、継続的な探求と実践を通じて、今で...

GobangゲームのWebバージョンを実装するためのJavaScript

この記事では、GobangゲームのWebバージョンを実装するためのJavaScriptの具体的なコー...

nginx.pid を開く際の失敗と無効の解決策

目次1. 問題の説明2. 問題分析3. 解決策解決策1: ディレクトリを作成する解決策2: 構成ファ...

初心者向け入門講座⑧:記事サイトを簡単に作る

前回の投稿では、Web ページの作成方法について説明しました。Web サイトは多くの Web ページ...

Ubuntu 18.04 MySQL 8.0 のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0のインストールと設定方法を参考までに紹介します。具体的な内容は以下の...

Nginx http を https にアップグレードする手順を完了する

httpとhttpsの違いは一部のウェブサイトでは、http を開くと、安全ではないというメッセージ...

MySQL 5.7.17 圧縮パッケージのインストールと設定方法のグラフィックチュートリアル

インターネット上にはMySQL 5.7.17のインストールチュートリアルがほとんどなく不十分なので、...