質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

2回答

13004閲覧

<el-table-column>のラベルにボタン(クリックイベント)を作成したい

退会済みユーザー

退会済みユーザー

総合スコア0

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2018/10/02 11:52

編集2018/10/09 11:01

実現したいこと

テーブルのラベルのクリックイベントからmethodに引数を引き渡したいです。

下のような感じです...

イメージ説明

追記(10月3日)

今回、vueで使えるElement uiのsort機能が使えなく失敗してしまいました。
考えられる原因を「試したこと」に書きました
(https://element.eleme.io/#/en-US/component/table#sorting)

###試したこと

ラベルのクリックイベントからmethodに引数を引き渡したいです。

vueの公式サイトなどで調べましたが、そもそもできるのか、できないのかが分からなかったので、ここで質問させていただきました。

追記(10月3日)
アドバイスいただきelementのページで調べて見ました。(大変勉強になりました)
(https://element.eleme.io/#/en-US/component/table#sorting)

しかしうまく行きませんでした。考えられる原因として、公式ページではテーブルをdata、propを使って表示していますが、自分の場合jsを使って表示しています(下記のコードの<template>部分です。)。

試したコード

ラベルのクリックイベントからmethodに引数を引き渡したいです。

vue

1//elmentの公式ページを参考に書いたコード 2<el-table-column 3label="age" 4min-width="40" 5sortable 6:sort-method="sortfunc('')">  //sortfuncは自分でテーブルをソートする関数です。 7<template scope="scope"> 8<span style="font-size:16px">{{"ここでjsから持って来たデータ"}}</span> 9</template> 10</el-table-column> 11 12//自分でなんとなく書いたコード 13<el-table-column 14label="age" 15min-width="40" 16@click.native="sortfunc('')"> 17<template scope="scope"> 18<span style="font-size:16px">{{"ここでjsから持って来たデータ"}}</span> 19</template> 20</el-table-column> 21

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

やりたいことはこのような形でしょうか?
https://codepen.io/y-ogura/pen/bzwVqB
私もdata.key.lengthなどで値を表示したかったのでクリックイベントでsortが動くようなコードが欲しくて実装してみました。
sortableをel-table-columnに付けずにheaderをクリックした際にメソッドが走ってel-tableのdataに渡している値がsortされるようにしています。
this.sortData.sortの中のifの条件を書き換えたり等すればネストの深い連想配列などにも対応できるようになるのではと思います。

vue

1<template> 2 <el-table 3 :data="order === 0 ? tableData : sortData" 4 :default-sort="{prop: 'date', order: 'descending'}" 5 style="width: 100%" 6 > 7 <el-table-column sortable width="180"> 8 <template slot="header" slot-scope="scope"> 9 <div @click="sortByKey('date')">Date</div> 10 </template> 11 <template slot-scope="scope">{{ scope.row.date }}</template> 12 </el-table-column> 13... 14</template> 15 16<script> 17export default { 18 data () { 19 return { 20 tableData: [{ 21 date: '2016-05-03' 22 }, { 23 date: '2016-05-02' 24 }, { 25 date: '2016-05-04' 26 }, { 27 date: '2016-05-01' 28 }], 29 order: 0, 30 sortData: [] 31 } 32 }, 33 methods: { 34 sortByKey (key) { 35 if (this.order != 2) { 36 this.order++ 37 } else { 38 this.order = 0 39 } 40 this.sortData = Object.assign([], this.tableData) 41 if (this.order != 0) { 42 this.sortData.sort((a, b) => { 43 const order = this.order === 1 ? 1 : -1 44 if (a[key] < b[key]) return order 45 if (a[key] > b[key]) return order * -1 46 }) 47 } 48 } 49 } 50 } 51} 52</script>

投稿2019/01/29 08:04

y-ogura

総合スコア23

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

el-table-column ということは Element UI を使用していると思うので(違ったらごめんなさい)、Vue の公式ではなく Element UI の公式サイトの table の sort を参考にすればできると思います。

投稿2018/10/02 12:24

fuuki

総合スコア70

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/10/02 12:25

ありがとうございます!調べて見ます!
fuuki

2018/10/10 09:03

試したコードを見る限り、Elementui の table は見た目のみで使用し、内部のデータの保持やメソッドは自分で用意しているので、動くように見えます。 sortfunc や data の持ち方が書かれていないのですが、ソートメソッドが動いた前後でデータの順番は変わっていますでしょうか。 もしくは、エラーコードなどがわかると嬉しいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問