最近、会社で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 テキストホバージャンプ特殊効果コード
コンテナ内でコマンドを実行したいが、コンテナに入りたくない場合があります。ではどうすればいいでしょう...
1. LVM の概要Linux ディスクを管理するときに、このような状況に遭遇することがよくあります...
...こんな感じで、今日はポップアップウィンドウを作ろうと思ったのですが、バックエンド PHP によ...
「スティッキーフッター」とはいわゆる「スティッキー フッター」は、新しいフロントエンドの概念や技術で...
MySQL で、id、a、b の 3 つのフィールドを持つ新しいテーブルを作成します。次のように、同...
インストール環境の説明•システムバージョン: windows10 •MySQL バージョン: mys...
序文私は、Web サイトのフロントエンド パフォーマンス最適化のための JavaScript と C...
Mysqlはブール型を設定します1. Tinyintタイプテストテーブルを作成し、blフィールドをブ...
開発プロジェクトでは、MySQL のスロークエリログを通じて効率の問題のある SQL を監視できます...
JavaScript厳密モードが 8 進数をサポートしていないという問題に関して、まず、 Java...
この効果は、2つのブラウザが互いにシミュレートしていることを示しています 1. シミュレートされたノ...
操作効果コードの実装html <div id="ウォッチ"> <...
Nginxを使用する目的Alibaba Cloud ECS クラウド サーバーを使用して、まずは著者...
テーブルの背景画像を設定します。任意の GIF または JPEG 画像ファイルを使用できます。基本的...
MySQL データ型における DECIMAL の使用法の詳細な説明MySQL のデータ型には、INT...