javascript - 如何使这个分页菜单在 Vue 中工作?
问题描述
我通过以下方式安装了 laravel-vue-pagination:
npm install laravel-vue-pagination
然后我在 app.js 中全局注册了它:
Vue.component('pagination', require('laravel-vue-pagination'));
最后,我有菜单,每个菜单都有类别,而每个类别都有产品。分页应该每页显示 3 个产品。它显示了第一页,下面显示了可用的页面数,但页面不可点击。我点击了第 2 页或第 3 页,但没有任何反应。
<div class="card-body">
<body>
<tbody>
<template v-for="product in catProducts.data" v-if="product.CATUID === category.CATID">
<tr>
<td @click="editText(product.ID+'-descript')">
<span v-if="!show(product.ID+'-descript')">{{product.DESCRIPT}}</span>
<input v-if="show(product.ID+'-descript')" type="text" v-focus="focused" @focus="focused = true" v-model="product.DESCRIPT" @blur="hide(product.RID ,product.ID ,product.DESCRIPT, 'DESCRIPT')" @keyup.prevent.enter="hide(product.RID ,product.ID ,product.DESCRIPT, 'DESCRIPT')"></td>
<td @click="editText(product.ID+'-tag1')">
<span v-if="!show(product.ID+'-tag1')">{{product.TAG1}}</span>
<input v-if="show(product.ID+'-tag1')" type="text" v-focus="focused" @focus="focused = true" v-model="product.TAG1" @blur="hide(product.RID ,product.ID ,product.TAG1, 'TAG1')" @keyup.prevent.enter="hide(product.RID ,product.ID ,product.TAG1, 'TAG1')"></td>
<td @click="editText(product.ID+'-tag2')">
<span v-if="!show(product.ID+'-tag2')">{{product.TAG2}}</span>
<input v-if="show(product.ID+'-tag2')" type="text" v-focus="focused" @focus="focused = true" v-model="product.TAG2" @blur="hide(product.RID ,product.ID ,product.TAG2, 'TAG2')" @keyup.prevent.enter="hide(product.RID ,product.ID ,product.TAG2, 'TAG2')"></td>
<td @click="editText(product.ID+'-price')">
<span v-if="!show(product.ID+'-price')">{{product.PRICE}}</span>
<input v-if="show(product.ID+'-price')" type="text" v-focus="focused" @focus="focused = true" v-model="product.PRICE" @blur="hide(product.RID ,product.ID ,product.PRICE, 'PRICE')" @keyup.prevent.enter="hide(product.RID ,product.ID ,product.PRICE, 'PRICE')"></td>
</tr>
</template>
</tbody>
</table>
</div>
和:
<pagination :data="catProducts" @pagination-change-page="getResults(category.CATID)"></pagination>
github 和我的唯一区别是将 CATID 添加到 ajax:
getResults(catid, page = 1) {
axios.get('api/getproducts/'+this.restid+'/'+catid+'?page=' + page)
.then(response => {
this.products = response.data;
});
},
知道如何使分页菜单起作用吗?
解决方案
除了奇怪的 HTML 层次结构,您没有从pagination-change-page
事件中捕获选定的页面
尝试使用以下(注意使用$event
)
<pagination
:data="catProducts"
@pagination-change-page="getResults(category.CATID, $event)"
></pagination>
getResults
你也可以稍微清理一下你的方法
async getResults (catid, page = 1) {
const url = `api/getproducts/${encodeURIComponent(this.restid}/${encodeURIComponent(catid)}`
const { data } = await axios.get(url, { params: { page } })
this.products = data;
},
推荐阅读
- mongodb - 尝试从命名空间“MongoDB\Driver\Monitoring”加载接口“CommandSubscriber”
- c# - 如何在 C# 中将每个新连接的对象添加到每个对象的列表中?
- r - 如何使用 R 代码从 4 个文件夹中创建一个大型 .csv 文件,每个文件夹包含 100 个文件?
- linq - EF Core 3.1 中的 Group By 和 To 字典
- javascript - javascript: 命名的 Firebase 应用程序已存在 (app/duplicate-app)
- node.js - 使用 Node 和 Axios 处理网络超时
- c++ - 如何使用 C++ 编译器在 VS 代码中使用 IntelliSense 的包含路径
- php - Ajax 不会在数据库中输入数据
- javascript - 在 CesiumJS 不规则矩形(多边形)中拟合图像材料
- sql - 当 1 个表看起来重复但不是时,使用连接进行 SQL 更新