如何在Vuejs中为每个分页号添加项目?

Posted

技术标签:

【中文标题】如何在Vuejs中为每个分页号添加项目?【英文标题】:How to add items to each pagination number in Vuejs? 【发布时间】:2021-08-04 11:39:39 【问题描述】:

分页参考https://bootstrap-vue.org/docs/components/pagination

 currentPage: 1,
 perPage: 3,
 
  computed: 

paginatedItems() 
  return this.productsList.slice(
    this.currentPage * this.perPage,
    (this.currentPage + 1) * this.perPage
  );

    rows() 
      return this.productsList.length;
    ,
  ,
          <div class="overflow-auto">
        <div v-for="(item, key) in paginatedItems" :key="key"></div>

            <div
              class="product-plp1"
              v-for="product in productsList"
              :key="product"
              id="product"
              :items="productsList"
              :per-page="perPage"
              :current-page="currentPage"
            >
              <div class="prod-plpimg1"></div>
              <div class="prod-plpimage1name">
                 product.key 
              </div>
              
              </div>
            </div>
          </div>
          <b-pagination
            v-model="currentPage"
            :total-rows="rows"
            :per-page="perPage"
            aria-controls="my-table"
          ></b-pagination>

          <p class="mt-3">Current Page:  currentPage </p>

如何为上述代码添加分页。我有 v-for 中可用的产品列表,现在我想添加 bootstrap-vue 分页。并在每个页码中显示产品。像 1.2.3,...

添加了 bootstrapvue 分页,但不知道如何开始,请你帮我解决这个问题。谢谢。

注意:- 因为我可以在一个地方查看所有产品列表,所以需要在每个页码中显示项目。

【问题讨论】:

【参考方案1】:

&lt;b-table&gt; 不同,它知道将 :items 渲染为其行,将 :items 传递给普通 DOM 元素

<div :items="productsList"></div>

什么都不做。你最终得到一个&lt;div&gt;:items,但它不知道如何处理它们。

对于普通的 DOM 元素,您必须自己遍历列表:

<div v-for="(item, key) in paginatedItems" :key="key">
   ...item specific stuff here...
</div>

在你的情况下,它可能看起来像:

<div v-for="product in paginatedItems" :key="product.key">
  ...product here...
</div>

此外,您必须根据currentPageperPagecomputed 中的paginatedItems 定义为项目的当前子部分:

computed: 
  paginatedItems() 
    return this.productsList.slice(
      this.currentPage * this.perPage,
      (this.currentPage + 1) * this.perPage
    );
  

【讨论】:

感谢您的回答。我已经进行了更改,但我仍然无法明智地选择页面中的项目。在计算属性中我做了更改,但是对于这个 v-for="product in productsList" 我需要用 v-for="(item, key) in paginatedItems" 替换:key="key" 还是写一个单独的 div .如果我错了,请纠正我。 我已经编辑了我的问题代码,请你看一次。 您必须将v-for="product in productsList" 替换为v-for="product in paginatedItems"。这就是我的意思,你不应该创建一个不同的、空的迭代。删除它。另外,不要使用对象作为键。使用原始值(字符串、数字)(例如::key="product.id")。如果您需要我的帮助以使其正常工作,请使用您所拥有的在 codesandbox.io 上创建一个minimal reproducible example。您到目前为止发布的内容不能用于创建工作示例,因为您缺少组件 &lt;script&gt; 并且我不知道其中有什么。 另外,您从组件&lt;script&gt; 发布的位不是有效的语法。缺少逗号很容易破坏您的应用程序,我不知道您是否在实际实现中缺少它,或者仅仅是因为您没有正确复制/粘贴。所以请在codesandbox.io上创建一个runnable minimal reproducible example(这很简单),将你的组件内容放在App.vue中,我会看看。 现在它正在使用您更新的答案。感谢您的努力,感谢您的时间。 :)

以上是关于如何在Vuejs中为每个分页号添加项目?的主要内容,如果未能解决你的问题,请参考以下文章

WPF DataGrid如何分页、导出Excle、打印(急)

如何在 vuejs 中将标题添加到 <th>?

如何在没有临时表的 SQL 查询中为组添加序列号

如何在 Android 中为 ViewPager 添加点?

如何在 Shopware 6 中为订单添加自定义字段?

如何在 Twig 中为 KNP 分页器获取分页方向?