Viv*_*ams 2 javascript arrays json object vue.js
我正在尝试通过单击按钮将 json 响应中的元素添加到我现有的数组中,但是我在正确添加这些元素时遇到了问题。
在这里,我有一个名为 results 的空数组,我在其中存储响应中的数据。
export default {
name: 'Posts',
props: ['user_id'],
data: function(){
return{
results: [],
pageNumber: 1,
}
},.....
Run Code Online (Sandbox Code Playgroud)
这是我获取数据的方法:
getData: function () {
var vm = this;
axios.get('http://127.0.0.1:8000/api/posts?page=' + vm.pageNumber)
.then(function (response) {
vm.results += response.data.data;
})
.catch(function (error) {
});
},
Run Code Online (Sandbox Code Playgroud)
在这种方法中,我将响应数据添加到数组中,如下所示:
vm.results += response.data.data;
我的响应是正确的,但在此操作后,我的结果数组如下所示:“[object Object],[object Object]...”
我还尝试通过 push 方法添加新元素:
vm.results.push(response.data.data);
但是,元素被添加到新数组中,但我想将对象添加到现有数组中。
这是我的回复的结构:
{"current_page":1,
"data":[
{
"id":60,
"title":"Post 1",
"body":"Post 1 body",
"created_at":"2018-06-09 18:33:40",
"updated_at":"2018-06-09 18:33:40",
"user_id":8
},
{
"id":61,
"title":"Post 2",
"body":"post 2 body",
"created_at":"2018-06-09 18:33:40",
"updated_at":"2018-06-09 18:33:40",
"user_id":8
},
etc...]
Run Code Online (Sandbox Code Playgroud)
尝试 :
vm.results = vm.results.concat(response.data.data);
Run Code Online (Sandbox Code Playgroud)
这会将数组“response.data.data”附加到“results”数组。
首先,您不必使用var vm = this;
,this.results
甚至可以在 vue 组件上下文中的 axios(和其他所有)回调中工作。
但实际问题是您正在使用连接+=
运算符添加到数组中。只需push
与扩展运算符 ( ...
) 一起使用,它就可以工作。
axios.get('http://127.0.0.1:8000/api/posts?page=' + this.pageNumber)
.then(response => {
this.results.push(...response.data.data);
})
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
27014 次 |
最近记录: |