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

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

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

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

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

0回答

1704閲覧

vue(element-ui)でページングを実現させたい

big_sky

総合スコア23

Vue.js

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

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2020/10/08 03:33

現在element-uiを使ってページングを作成しようとしているのですが、どうしたら取得したデータとpaginationタグを紐付けて正常に動作させるのか方法がわかりません。
やりたいこと
・総件数を表示する
・現在表示している場所を表示する
・一つのページに約(例)100件
このうち「現在表示している場所を表示する」は、el-paginationを少しカスタマイズしればできました。

できていないこと
・paginationと取得したデータが同期していない
・例えば2(次のページ)を押しても1ページ目と何も変わらない

pagination.vue <template> <el-pagination :current-page.sync="currentPage" :page-size.sync="pageSize" :layout="layout" :page-sizes="pageSizes" :total="total" v-bind="$attrs" @size-change="handleSizeChange" @current-change="handleCurrentChange" </template> <script lang="ts"> import { Component, Prop, Vue } from "vue-property-decorator"; import { scrollTo } from "@/utils/scroll-to"; @Component({ name: "Pagination", }) export default class extends Vue { @Prop({ required: true }) private total!: number; @Prop({ default: 1 }) private page!: number; @Prop({ default: 20 }) private limit!: number; @Prop({ default: () => [60] }) private pageSizes!: number[]; @Prop({ default: "total, sizes, prev, pager, next, jumper" }) private layout!: string; get currentPage() { return this.page; } set currentPage(value) { this.$emit("update:page", value); } get pageSize() { return this.limit; } set pageSize(value) { this.$emit("update:limit", value); } handleSizeChange(value: number) { this.$emit("pagination", { page: this.currentPage, limit: value }); } handleCurrentChange(value: number) { this.$emit("pagination", { page: value, limit: this.pageSize }); } } </script>
index.vue <template> <pagination :page.sync="listQuery.page" :limit.sync="listQuery.limit" :total="20" layout="prev, pager, next" @pagination="getList" /> </template> <script lang="ts"> @Component({ name: "hogehoge", components: { Pagination, }, }) export default class extends Vue { private total = 0; private listQuery = { page: 1, limit: 5, }; private data: hoge[] = []; created() { this.getList(); } private async getList() { try { //API側で数千件のデータをselect * from hogeで取得している this.data = await api取得関数() as hoge[]; } catch (error) { エラー処理 } } } </script>

色々と、省略はしてりとりあえず値を入れている等の箇所もありますが、必要なとこだけ掲載しました。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問