要素 ui の el-table の列にさまざまなスタイルのデータを動的に実装する例

要素 ui の el-table の列にさまざまなスタイルのデータを動的に実装する例

問題の説明

Ele.me UI のフレームワークでは、入力データは el-form であり、出力データは el-table です。製品によっては、コンテンツごとに異なるスタイルを表示するなど、退屈なテーブルを動的にしたい場合があります。この要件を満たす方法は実際には多数あります。この記事では、参考として 2 つを紹介します。

実施方法1

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

コードは次のとおりです

<テンプレート>
 <div id="アプリ">
  <!-- 要件: 三国志のキャラクター テーブル。異なる国には異なる色で表示する必要があります (魏は赤、蜀は黒、呉は青) -->
  <el-table :data="テーブルデータ" スタイル="幅: 100%">
   <el-table-column prop="name" label="姓名" width="180"> </el-table-column>
   <el-table-column prop="nation" label="国别" width="180"> 
    <!-- テンプレート スロットを通じて対応するデータを取得し、異なるデータを異なる色で表示します。もちろん、表示できるのは 1 つだけです (v-if によって制御されます) -->
    <テンプレートスコープ="スコープ">
     <div v-if="scope.row.nation == '魏国'" style="color:red;font-weight:bold;">{{scope.row.nation}}</div>
     <div v-if="scope.row.nation == '蜀国'" style="color:black;font-weight:bold;">{{scope.row.nation}}</div>
     <div v-if="scope.row.nation == '吴国'" style="color:blue;font-weight:bold;">{{scope.row.nation}}</div>
    </テンプレート>
   </el-table-column>
   <el-table-column prop="bornPlace" label="出生地"> </el-table-column>
  </el-table>
 </div>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
 名前:「アプリ」、
 データ() {
  戻る {
   テーブルデータ: [
    {
     名前:「劉備」、
     国:「蜀王国」、
     出身地: "涛県、涛県(河北省涛州市)",
    },
    {
     名前:「曹操」
     国家:「魏国」、
     出身地: "沛州橋県 (安徽省亳州市)",
    },
    {
     名前: 「孫権」、
     国:「呉州」、
     出身地: 「浙江省杭州市阜陽区武君富春県」
    },
    {
     名前:「関羽」
     国:「蜀王国」、
     出身地: "河東県(山西省運城市塩湖区杰州鎮)",
    },
   ]、
  };
 },
};
</スクリプト>

方法 1 この最初の方法を要約すると、効果は達成できますが、コードが el-table で記述されるため、見た目が肥大化します。動的に表示する必要があるスタイルが 2 つまたは 3 つだけの場合は記述できますが、動的に表示するスタイルが 7 つまたは 8 つ、あるいはそれ以上ある場合、この記述方法は非常に肥大化し、後でメンテナンスするのが難しくなります。個人的には、2 番目の方法をお勧めします。これは、vue 独自の :style 動的バインディング スタイルを使用してこれを実現する方法で、コードを簡素化できるだけでなく、より豊かな効果も実現できます。次のように:

実装方法2

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

コードは次のとおりです

<テンプレート>
 <div id="アプリ">
  <!-- 要件: 三国志のキャラクター テーブル。異なる国には異なる色 (魏は赤、蜀は黒、呉は青) を表示する必要があります -->
  <el-table :data="テーブルデータ" スタイル="幅: 100%">
   <el-table-column prop="name" label="姓名" width="180"> </el-table-column>
   <el-table-column prop="nation" label="国别" width="180"> 
    <!-- テンプレート スロットを通じて対応するデータを取得し、vue の動的スタイル メソッドを通じてさまざまな色を動的に表示するというアイデアです。このメソッドはより柔軟です -->
    <テンプレートスコープ="スコープ">
     <!-- 意味: この div に動的なスタイルをバインドします。カラー属性値は getColorByNation() メソッドの戻り値なので、渡されたスコープを通じてメソッドの戻り値を動的に設定するだけで済みます -->
     <div :style="{color:getColorByNation(scope),fontSize:getSizeByNation(scope),fontWeight:'bold'}">{{scope.row.nation}}</div>
    </テンプレート>
   </el-table-column>
   <el-table-column prop="bornPlace" label="出生地"> </el-table-column>
  </el-table>
 </div>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
 名前:「アプリ」、
 データ() {
  戻る {
   テーブルデータ: [
    {
     名前:「劉備」、
     国:「蜀王国」、
     出身地: "涛県、涛県(河北省涛州市)",
    },
    {
     名前:「曹操」
     国家:「魏国」、
     出身地: "沛州橋県 (安徽省亳州市)",
    },
    {
     名前: 「孫権」、
     国:「呉州」、
     出身地: 「浙江省杭州市阜陽区武君富春県」
    },
    {
     名前:「関羽」
     国:「蜀王国」、
     出身地: "河東県斌県 (山西省運城市塩湖区斌州鎮)",
    },
   ]、
  };
 },
 メソッド: {
  // 動的に色を設定する getColorByNation(scope){
   console.log(scope); // 次の図に示すように、渡されたスコープを、テーブルの異なる行のデータ行全体に対応するように出力します。 
   if(scope.row.nation == "魏国"){
    「赤」を返す
   }else if(scope.row.nation == "Shu"){
    「黒」を返す
   }そうでない場合、scope.row.nation == "Wu"){
    「青」を返す
   }
  },
  // フォントサイズを動的に設定する getSizeByNation(scope){
   if(scope.row.nation == "魏国"){
    「14px」を返す
   }else if(scope.row.nation == "Shu"){
    「18px」を返す
   }そうでない場合、scope.row.nation == "Wu"){
    「24px」を返す
   }
  }
 },
};
</スクリプト> 

渡されたスコープを印刷する

方法 2 は、vue を介してスタイルをバインドして制御するこの方法が、最初の方法よりもはるかに柔軟であることをまとめたものです。結局、最初の方法は el-table で記述され、2 番目の方法は methods で記述されます。具体的にどれを使用するかは、シーンの要件によって異なります。

要素 ui の el-table の列にさまざまなスタイルのデータを動的に実装する例についての記事はこれで終わりです。要素 ui の el-table の列にさまざまなスタイルのデータを動的に実装する例をさらにご覧になりたい場合は、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • VUE テーブルは動的にデータ列を追加し、新しく追加されたデータは編集できません (v-model にバインドされたデータはリアルタイムで更新できません)
  • Vueはel-tableテーブル列の表示と非表示の動的制御を実装します
  • VUE2.0+ElementUI2.0 テーブル el-table loop 動的列レンダリングの書き方を詳しく解説
  • Vue はどのようにして el-table のデータ列を動的に変更するのか

<<:  CentOS で Mysql を再起動するさまざまな方法 (推奨)

>>:  Windows で IP アドレスを指定してサーバーへのリモート アクセスを設定する方法

推薦する

MySQL の複合インデックスはどのように機能しますか?

目次背景複合インデックスを理解する左端一致原則フィールド順序の影響複合インデックスは単一のインデック...

Dockerコンテナが外部ネットワークにpingできない問題を解決する

今日、docker で redis 環境を構築していたところ、yum がリソースを取得できず、インタ...

キャンバス操作プラグイン fabric.js の使い方を詳しく解説

Fabric.js は非常に便利なキャンバス操作プラグインです。ここでは、日常のプロジェクトで使用さ...

LinuxテキストエディタVimの詳しい説明

Vim は強力なフルスクリーン テキスト エディターであり、Linux/UNIX で最も一般的に使用...

HTML チュートリアル: よく使われる HTML タグのコレクション (5)

導入された HTML タグは、必ずしも XHTML 仕様に完全に準拠しているわけではありません。実際...

Vue v-onディレクティブの使用について

目次1. イベントのリスニング2. イベントパラメータを渡す3. イベント修飾子ケース1: クリック...

Raspberry PiにDockerをインストールする方法

Raspberry Pi は ARM アーキテクチャをベースとしているため、Docker のインスト...

HTML、CSS、JSコメントの標準的な使用法の概要

必要なコメントを追加することは、責任感と道徳心のあるフロントエンド開発者が持つべき良い習慣であり、コ...

問題におけるJS演算子の調査

問題は、誰もが「メモリ リーク」について知っていることです。一般的なシナリオはいくつかあります。クロ...

Dell R720 サーバーに Windows Server 2008 R2 をインストールする方法

注: この記事のすべての写真はインターネットから収集されたものであるため、DELL R720 サーバ...

MySQL での varchar 型の日付の比較、並べ替え、その他の操作の実装

MySQL を使用する場合、日付は通常、datetime や timestamp などの形式で保存さ...

Nginx サーバーで Web クローラーをブロックおよび禁止する方法

通常、すべての Web サイトは、多くの非検索エンジン クローラーに遭遇します。これらのクローラーの...

初心者向けMySQLインデックス

序文MySQL インデックスで最も重要なデータ構造は B+ ツリーなので、まずは B+ ツリーの原理...

一定期間の日ごと、時間ごとの統計データを取得するMySQLの詳しい説明

毎日の統計情報を取得するプロジェクトを実行する際、プロジェクト ログを分析する必要があります。要件の...

正の整数かどうかを判断するMYSQLカスタム関数の例コード

関数を記述できます。主に正規表現を使用して判断を行います。入力文字が空の場合は、「-」を使用して置き...