最近、会社で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 をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: CSS 3.0 テキストホバージャンプ特殊効果コード
今日は、CSS を使用してクールな画像カルーセル コンポーネントを作成する方法を学びます。その原理は...
目次再実行ログディスクデータを直接更新するのではなく、最初にメモリデータを更新する必要があるのはなぜ...
1. Apache 静的リソースのクロスドメイン アクセスApache設定ファイルhttpd.con...
目次準備展開プロセスRocketMQ の初体験関連する質問ヘルプドキュメント私は最近 RocketM...
HTML でのテキストのデフォルトの配置は水平ですが、特殊な場合にはテキストを垂直に配置する必要が...
前回の記事「MySQL テーブル構造の変更、メタデータ ロックを知っておく必要があります」では、MD...
1. ページ要件1) 標準のヘッダーとフッターを使用するXML/HTML コードコンテンツをクリップ...
目次1. はじめに2. インターフェース3. 簡単な例4. 結論1. はじめにMDN の公式 Web...
FORM 要素の enctype 属性は、フォーム データがサーバーに送信されるときに使用されるエン...
目次1. リテラル値でオブジェクトを作成する2. 新しいキャラクターを使ってオブジェクトを作成する3...
今日、slave_exec_modeというパラメータを偶然見ました。マニュアルの説明から、このパラメ...
この記事では、参考までにMySQL 8.0.16のインストールと設定方法のグラフィックチュートリアル...
目次1. 解凍する2. データフォルダを作成する3. MySQLに環境変数を追加する3.1 コントロ...
導入された HTML タグは、必ずしも XHTML 仕様に完全に準拠しているわけではありません。実際...
目次序文1. システムサービス制御1. システムctl 2. ターゲット3. 共通システムサービス4...