ホームページ ウェブフロントエンド jsチュートリアル element-ui の VUE の ElTableColumn 拡張機能の詳細な説明

element-ui の VUE の ElTableColumn 拡張機能の詳細な説明

May 28, 2018 pm 03:49 PM
element-ui 拡大する

この記事では主に、Element-ui における VUE の ElTableColumn 拡張機能の詳細な説明を紹介し、参考として提供します。

会社には新しい要件があります。ElTableColumn の先頭をクリックして検索します。私の同僚はすでにこの関数を作成していますが、これをコンポーネントにカプセル化し、それについて学ぶ予定です。

ElTableColumn はもともと次のようになっていました:


やりたいことは次のようなものです:


コードを直接入れただけなので、いちいち説明するのは多すぎます。

コードの構造:


コンポーネント

<!-- ElTableColumnPro.vue -->
<template>
   <el-table-column v-if="visible" :formatter="formatter" :align=&#39;align&#39; :prop="prop" :header-align="headerAlign" :label="label" :width="width" :render-header="renderHeader" >
     <template slot-scope="scope">
      <slot :row="scope.row" :$index="scope.$index" >
       <span>{{fomatMethod(scope.row[prop])}}</span>
      </slot>
     </template>
   </el-table-column>
</template>

<script>
import moment from "moment";

export default {
 name: "el-table-column-pro",
 props: {
  prop: {
   type: String
  },
  label: {
   type: String
  },
  width: {
   type: Number
  },
  renderType: {
   type: String,
   validator: value => ["date", "input", "select"].includes(value)
  },
  placeholder: {
   type: String
  },
  rederWidth: {
   type: String,
   default: "230px"
  },
  param: {
   type: String,
   default: ""
  },
  startDate: {
   type: String
  },
  endDate: {
   type: String
  },
  selectList: {
   type: Array
  },
  isClear: {
   type: Boolean,
   default:true
  },
  visible: {
   type: Boolean,
   default: true
  },
  filterIcon: {
   type: String,
   default: "el-icon-search"
  },
  callback: {
   type: Function
  },
  formatter: {
   type: Function,
   default:(row, column, cellValue)=>cellValue
  },
  align:{
   type:String 
  },
  headerAlign:{
   type:String
  }
 },
 data() {
  return {
   formatD:this.filterIcon
  };
 },
 
 methods: {

  fomatMethod(value){
   return this.formatter(&#39;&#39;,&#39;&#39;,value)
  },
  
  renderHeader(createElement, { column, $index }) {
   switch (this.renderType) {
    case "date":
     return this.renderDate(createElement, { column, $index });

    case "input":
     return this.rederInput(createElement, { column, $index });
     
    case "select":
     return this.rederSelect(createElement, { column, $index });
    
    default:
     return column.label;
   }
  },

  rederInput(createElement, { column, $index }) {
   return createElement(
    "p",
    {
     class: "filters",
     style: {
      color: column.color
     }
    },
    [
     createElement(
      "el-popover",
      {
       props: {
        placement: "bottom",
        width: "200",
        trigger: "click"
       }
      },
      [
       createElement("el-input", {
        props: {
         placeholder: this.placeholder,
         value: this.param
        },
        nativeOn: {
         keyup: event => {
          if (event.keyCode === 13) {
           this.$emit("update:param", event.target.value);
           this.callback && this.callback();
          }
         }
        },
        on: {
         blur: event => {
          this.$emit("update:param", event.target.value);
          this.callback && this.callback();
         }
        }
       }),
       createElement(
        "span",
        {
         slot: "reference"
        },
        [
         column.label,
         createElement("i", {
          class: this.filterIcon,
          style: {
           marginLeft: "4px"
          }
         })
        ]
       )
      ]
     )
    ]
   );
  },

  rederSelect(createElement, { column, $index }) {
   return createElement(
    "p",
    {
     class: "filters",
     style: {
      color: column.color
     }
    },
    [
     createElement(
      "el-popover",
      {
       props: {
        placement: "bottom",
        width: "200",
        trigger: "click"
       }
      },
      [
       createElement(
        "el-select",
        {
         props: {
          placeholder: this.placeholder,
          value: this.param,
          clearable: this.isClear
         },
         on: {
          input: value => {
           this.$emit("update:param", value);
           this.callback && this.callback();
          }
         }
        },
        [
         this.selectList.map(item => {
          return createElement("el-option", {
           props: {
            value: item.value,
            label: item.label
           }
          });
         })
        ]
       ),
       createElement(
        "span",
        {
         slot: "reference"
        },
        [
         column.label,
         createElement("i", {
          class: this.filterIcon,
          style: {
           marginLeft: "4px"
          }
         })
        ]
       )
      ]
     )
    ]
   );
  },

  renderDate(createElement, { column, $index }) {
   return createElement(
    "p",
    {
     class: "filters"
    },
    [
     createElement(
      "el-popover",
      {
       props: {
        placement: "bottom",
        width: this.rederWidth,
        trigger: "click"
       }
      },
      [
       createElement("el-date-picker", {
        props: {
         placeholder: this.placeholder,
         value: this.value,
         type: "daterange",
         rangeSeparator:"至",
         startPlaceholder:"开始日期",
         endPlaceholder:"结束日期",
        },
        style: {
         width: this.rederWidth
        },
        on: {
         input: value => {
          if (value) {
           const startDate = moment(value[0]).format("YYYY-MM-DD");
           const endDate = moment(value[1]).format("YYYY-MM-DD");
           this.$emit("update:startDate", startDate);
           this.$emit("update:endDate", endDate);
           this.callback && this.callback();
          }
         }
        }
       }),
       createElement(
        "span",
        {
         slot: "reference"
        },
        [
         column.label,
         createElement("i", {
          class: this.filterIcon,
          style: {
           marginLeft: "4px"
          }
         })
        ]
       )
      ]
     )
    ]
   );
  }
 }
};
</script>
<!-- index.js -->
import ElTableColumnPro from &#39;./ElTableColumnPro&#39;
ElTableColumnPro.install = function(Vue) {
 Vue.component(ElTableColumnPro.name, ElTableColumnPro);
};
export default ElTableColumnPro;

インストール

import ElTableColumnPro from &#39;components/ElTableColumnPro/index&#39; 
...
...
...

Vue.use(ElTableColumnPro)

使用方法

 <el-table :data="bankFlow" style="width:100%" stripe>
    <el-table-column-pro :visible="showMore" prop="transactionId" label="流水号" :width="120"> </el-table-column-pro>
    <el-table-column-pro prop="clientCode" label="客户代码 " :width="120" placeholder="请输入客户代码" :callback="requestTransactionLogs" renderType="input" :param.sync="request_params.clientCode"> </el-table-column-pro>
    <el-table-column-pro prop="eventTypeName" label="事件 " placeholder="请选择事件"  :selectList="listEventEnum" :callback="requestTransactionLogs" renderType="select" :param.sync="request_params.event" :width="100"> </el-table-column-pro>
    <el-table-column-pro prop="createTime" :callback="requestTransactionLogs" :startDate.sync="request_params.startDate" :endDate.sync="request_params.endDate" :formatter="$timeformat" label="时间" renderType="date" :width="180" ></el-table-column-pro>
 </el-table>

 <el-table :data="lists.content" v-loading="loading" @row-dblclick="detail" >
    <el-table-column-pro :width="120" prop="clientCode" label="客户代码 " align="center" header-align="center" placeholder="请输入客户代码" :callback="getLists" renderType="input" :param.sync="params.clientCode"></el-table-column-pro>      
    <el-table-column-pro label="内容 " placeholder="请输入内容" :callback="getLists" renderType="input" :param.sync="params.content">
        <template slot-scope="scope">
           <pre class="brush:php;toolbar:false">{{scope.row.content}}

上記はまとめてみました 皆さん、今後も皆様のお役に立てれば幸いです。

関連記事:

戻り値に pre タグを自動的に追加する Ajax ソリューション

異なる名前空間のアクションを使用する ajax メソッド

Ajax を使用してリンクをプレビューすると、そのコンテンツを確認できますリンク

以上がelement-ui の VUE の ElTableColumn 拡張機能の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Stock Market GPT

Stock Market GPT

AIを活用した投資調査により賢明な意思決定を実現

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

ホットトピック

最初から最後まで: PHP 拡張機能 cURL を使用して HTTP リクエストを行う方法 最初から最後まで: PHP 拡張機能 cURL を使用して HTTP リクエストを行う方法 Jul 29, 2023 pm 05:07 PM

最初から最後まで: HTTP リクエストに php 拡張機能 cURL を使用する方法 はじめに: Web 開発では、多くの場合、サードパーティ API または他のリモート サーバーと通信する必要があります。 cURL を使用して HTTP リクエストを行うのは、一般的で強力な方法です。この記事では、PHP を使用して cURL を拡張して HTTP リクエストを実行する方法を紹介し、いくつかの実用的なコード例を示します。 1. 準備 まず、php に cURL 拡張機能がインストールされていることを確認します。コマンドラインで php-m|grepcurl を実行して確認できます。

Vue と Element-UI を使用して画像の遅延読み込みを実装する方法 Vue と Element-UI を使用して画像の遅延読み込みを実装する方法 Jul 22, 2023 pm 04:05 PM

Vue と Element-UI を使用して画像の遅延読み込みを実装する方法 遅延読み込みは画像の読み込みを遅らせるテクノロジーで、ページの読み込み速度を効果的に向上させ、帯域幅を節約し、ユーザー エクスペリエンスを向上させることができます。 Vue プロジェクトでは、Element-UI といくつかのプラグインを使用して、画像の遅延読み込み機能を実装できます。この記事では、Vue と Element-UI を使用して画像の遅延読み込みを実装する方法を紹介し、対応するコード例を添付します。 1. 開始する前に必要な依存関係をインストールします。

VueとElement-UIを使用してカレンダーと日付の選択機能を実装する方法 VueとElement-UIを使用してカレンダーと日付の選択機能を実装する方法 Jul 22, 2023 pm 05:30 PM

Vue と Element-UI を使用してカレンダーと日付の選択機能を実装する方法の紹介: フロントエンド開発では、カレンダーと日付の選択機能は非常に一般的な要件の 1 つです。 Vue と Element-UI は非常に強力な開発ツールであり、これらを組み合わせることでカレンダーや日付の選択機能を簡単に実装できます。この記事では、Vue と Element-UI を使用して簡単なカレンダーと日付選択機能を作成する方法を紹介し、読者が実装の具体的な手順と方法を理解できるようにコード例を示します。準備:はじめに

PHP 関数の拡張機能とサードパーティ モジュール PHP 関数の拡張機能とサードパーティ モジュール Apr 13, 2024 pm 02:12 PM

PHP 関数の機能を拡張するには、拡張機能とサードパーティのモジュールを使用できます。拡張機能は、pecl パッケージ マネージャーを通じてインストールおよび有効化できる追加の関数とクラスを提供します。サードパーティ モジュールは特定の機能を提供し、Composer パッケージ マネージャーを通じてインストールできます。実際の例には、拡張機能を使用して複雑な JSON データを解析したり、モジュールを使用してデータを検証したりすることが含まれます。

Vue と Element-UI を使用してデータ フィルタリングと検索機能を実装する方法 Vue と Element-UI を使用してデータ フィルタリングと検索機能を実装する方法 Jul 21, 2023 pm 08:40 PM

Vue と Element-UI を使用してデータ フィルタリングと検索機能を実装する方法現代の Web 開発では、データ フィルタリングと検索機能は非常に一般的で重要な要件です。 Vue と Element-UI は現在非常に人気のあるフロントエンド フレームワークであり、データ フィルタリングと検索機能を簡単に実装できる強力なツールとコンポーネントを多数提供します。この記事では、Vue と Element-UI を使用してこれらの機能を実装する方法を紹介し、詳細なコード例を示します。まず、準備する必要があります

CENTOS7でmbstring拡張機能をインストールするにはどうすればよいですか? CENTOS7でmbstring拡張機能をインストールするにはどうすればよいですか? Jan 06, 2024 pm 09:59 PM

1.UncaughtError:Calltoundependentfunctionmb_strlen(); 上記のエラーが発生した場合、mbstring 拡張機能がインストールされていないことを意味します; 2. PHP インストール ディレクトリ cd/temp001/php-7.1.0/ext/mbstring に入ります 3. phpize( /usr/local/bin /phpize または /usr/local/php7-abel001/bin/phpize) コマンドを使用して、php 拡張機能 4../configure--with-php-config=/usr/local/php7-abel をインストールします。

php CodeIgniter に最適なプラグイン: Web サイトを次のレベルに引き上げます php CodeIgniter に最適なプラグイン: Web サイトを次のレベルに引き上げます Feb 19, 2024 pm 11:48 PM

CodeIgniter は強力な PHP フレームワークですが、機能を拡張するために追加機能が必要になる場合があります。プラグインはこれを実現するのに役立ちます。 Web サイトのパフォーマンスの向上からセキュリティの向上まで、さまざまな機能を提供できます。 1.HMVC (階層モデル ビュー コントローラー) Hmvc プラグインを使用すると、CodeIgniter で階層化された MVC アーキテクチャを使用できます。これは、複雑なビジネス ロジックを含む大規模なプロジェクトに役立ちます。 HMVC を使用すると、コントローラーをさまざまなモジュールに編成し、必要に応じてこれらのモジュールをロードおよびアンロードできます。デモ コード: //次のコードを config/routes.php に追加します: $route["/module/contr

Kirin OS はマルチスクリーン作業環境の拡張と管理をどのように提供しますか? Kirin OS はマルチスクリーン作業環境の拡張と管理をどのように提供しますか? Aug 04, 2023 am 10:15 AM

Kirin OS はマルチスクリーン作業環境の拡張と管理をどのように提供しますか?コンピューター技術の継続的な発展に伴い、マルチスクリーン ディスプレイは現代の作業環境における一般的な要件となっています。マルチタスクと作業効率に対するユーザーの要件を満たすために、Kirin オペレーティング システムは一連の強力なマルチスクリーン拡張機能と管理機能を提供します。この記事では、Kirin オペレーティング システムがマルチスクリーン作業環境の拡張と管理を実装する方法を紹介し、対応するコード例を添付します。マルチスクリーン作業環境の拡張 Kirin OSはマルチスクリーン作業環境のための拡張機能を提供します

See all articles