javascript - v-for json 中的切片对象 - Vue 警告:TypeError:无法读取未定义的属性“切片”
问题描述
我有一个来自 laravel api 的 json 响应,上面有 800 个项目。我希望向用户显示 15 个项目。用户必须单击“加载更多”按钮才能显示更多 15。
一切都按预期工作,但 Vue Js 抛出此警告:
[Vue 警告]:渲染错误:“TypeError:无法读取未定义的属性‘切片’”
代码:
<div class="col" v-for="value in products.products.slice( 0, productsShow)">
//logic {{value.content}}
</div>
<button
v-if="products.products.length > 15 &&
productsShow < products.products.length"
@click="loadMore">
Load more products
</button>
VueJs
<script>
import axios from 'axios'
export default {
data() {
return {
products: [],
productsShow: ''
}
},
methods: {
loadMore () {
this.productsShow += 15
}
},
created() {
axios.get('/api/products/pt').then(response => this.products = response.data)
this.productsShow = 15
}
}
</script>
也试过这个:
<script>
import axios from 'axios'
export default {
data() {
return {
products: [],
productsShow: 15
}
},
methods: {
loadMore () {
this.productsShow += 15
}
},
created() {
axios.get('/api/products/pt').then(response => this.products = response.data)
}
}
</script>
编辑 Api 响应:Api Laravel 响应
解决方案
这是因为您将产品实例化为一个数组,而它的目的是成为具有属性“产品”的对象。因此,您应该将数据声明更改为如下所示。
export default {
data() {
return {
products: {
products: []
},
productsShow: 15
}
}
}
同样在您的模板中,您也可以这样做。
<div
class="col"
v-if="products.products"
v-for="value in products.products.slice( 0, productsShow)"
>
任何一个都可以。
推荐阅读
- github - 身份验证已删除。请改用个人访问令牌
- c++ - 克隆带有散列的随机指针的链表
- python - 安装 cuDNN 后出现错误消息“无分配器统计信息”
- go - 在六边形架构中,周期性后台任务适合哪里?
- python - 如何使用python加载多个json文件并一一读取文件
- button - 我可以在将当前页面重定向到另一个表单时打开一个新标签吗?
- node.js - 使用 Node.js 和 React 将私有 S3 存储桶中的视频提供给经过身份验证的用户
- c# - 在我的 C# 代码中遇到 NullReferenceException,我不知道为什么!!!!Unity3D 按钮问题 :(
- phpmyadmin - phpMyAdmin 5.1.1 文本和文本区域太大
- javascript - 即使我已经登录,也出现角度错误 401