javascript - 如何使用 vue js 和 laravel 在搜索结果中创建更多负载
问题描述
我想用 vue js 和 laravel 在我的搜索结果中创建更多的函数加载。
这就是我尝试的。我要搜索的表单代码
<form @submit.prevent="search">
<input v-model="term" type="search">
<button class="btn btn-success" type="submit">Search</button>
</form>
这里是显示搜索结果
<tr v-for="(result, index) in results.data">
<td>{{ result.artist_name }}</td>
<td>{{ result.gender }}</td>
<td>{{ result.created_at }}</td>
<td>{{ result.updated_at }}</td>
</tr>
<div v-if="results.next_page_url" class="card-footer">
<button @click.prevent="paginatesearch(results.next_page_url)" type="button">Load More</button>
</div>
这是我的数据变量
data() {
return {
term:'',
results:[],
}
},
这是我显示搜索结果的代码。
search() {
let formData = new FormData();
formData.append('term', this.term);
axios.post('/api/artist/search/', formData)
.then((response) => {
this.SearchDiv = true;
this.IndexDiv = false;
this.results = response.data;
this.noResults = this.results.length === 0;
});
},
这是我显示加载更多数据的代码
paginatesearch(url = '') {
this.loading = true;
this.disabled = 1;
axios.get(url ? url : '/api/artist/search/')
.then(response => {
this.loading = false;
this.disabled = 0;
if (! this.results.data) {
this.results = response.data
}
else {
this.results.data.push(...response.data.data)
this.results.next_page_url = response.data.next_page_url
}
})
.catch(e => console.error(e))
},
但是当我点击按钮时,它给了我
TypeError:无法将 undefined 或 null 转换为对象
如果您需要,这是我的完整代码https://github.com/jazuly1/nginx/blob/master/loadmorewithsearch.vue
解决方案
'results' 被定义为一个数组,但被用作一个对象。
推荐阅读
- flutter - 参数类型“对象?” 不能分配给参数类型“颜色?”
- python - torch.hub.load() 引发 HTTPError:HTTP 错误 404:加载模型时未找到
- maya - 在 Maya 中隐藏架子选项卡(使用 Python)
- domain-driven-design - DDD – 如何在其他有界上下文中实现对多语言数据的访问
- java - org.hibernate.exception.GenericJDBCException:关键字“as”附近的语法不正确
- json - 当值不匹配时使用 jq 添加新的 JSON 字段
- java - 我们是否可以使用 Mockito 验证在多个对象之一上调用了一个方法
- javascript - Discord JavaScript 机器人未能踢出用户
- deep-learning - 寻找每个频道都有独立流程的特定 CNN 的文章或参考资料
- javascript - 在 Google 脚本中满足条件时,循环不会停止