要素 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 アドレスを指定してサーバーへのリモート アクセスを設定する方法

推薦する

Linux でタイムアウト付きの接続関数を試す

前回の記事では、Windows でタイムアウトを試してみました。この記事では、Linux で試してみ...

Navicat PremiumはMySQLデータベースを操作します(SQL文を実行します)

1. Navicatの紹介1. Navicat とは何ですか? Navicat は強力な MySQ...

CentOS 環境で NFS リモート ディレクトリ マウントを使用する手順の紹介

目次1. NFS の概要2. NFS構築1. NFSサーバーの構築2. NFSクライアントの構築3....

スライドドアを実装するための CSS サンプルコード

いわゆるスライディングドアテクノロジーとは、さまざまな長さのテキストに合わせてボックスの背景を自動的...

Vue から React への変換入門ガイド

目次デザインコンポーネント通信ライフサイクルイベント処理品格とスタイルクラススタイル条件付きレンダリ...

MySQLで重複行を削除する方法

SQL文 /* MySQL で重複行を削除するいくつかの方法 ---Chu Minfei ---20...

MySQL の左結合操作における on 条件と where 条件の違いの紹介

優先度両方のケースで同じ条件を設定すると、異なる結果セットが生成される可能性があるのは、優先順位のた...

163 メールボックスログインボックスインタラクティブデザインの改善体験と共有

LOFTER のコンテストで、ログイン ボックスを再設計できると言及されているのを見ました。過去 2...

HTMLシールドの右クリックメニューと左クリック入力機能の例

右クリックメニューを無効にする <body oncontextmenu=self.event....

bash スクリプトで ssh/scp コマンドにパスワードを渡す方法の詳細な説明

SSHPASSをインストールする最新のオペレーティング システムでは、sshpass パッケージはデ...

Ubuntu16.04 インストール mysql5.7.22 グラフィックチュートリアル

VMware12.0+Ubuntu16.04+MySQL5.7.22 インストールチュートリアルの詳...

ウェブページを作る前に、これらのいわゆる仕様を見てみましょう

この記事では、Web ページを作成する前に確認すべき、いわゆる仕様をいくつかまとめました。皆様のお役...

Nginx 経由で Tomcat9 クラスターを構築し、セッション共有を実現する

Nginx を使用して Tomcat9 クラスターを構築し、Redis を使用してセッション共有を実...

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

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

すべてまたは逆の選択機能を実現するJavaScript

この記事では、全選択または選択を反転する機能を実現するためのJavaScriptの具体的なコードを参...