Json 使用Vue JS从API获取数据时遇到问题
我在Vue JS中迭代json文件中的数据时遇到问题。我已经准备好了一切,并且可以访问json。我在这里遗漏了什么: JSONJson 使用Vue JS从API获取数据时遇到问题,json,vue.js,Json,Vue.js,我在Vue JS中迭代json文件中的数据时遇到问题。我已经准备好了一切,并且可以访问json。我在这里遗漏了什么: JSON { "test": "example", "data": [ { "name": "My Name", "address": "My Address" } ] } Vue JS html {{ someData['name'] }} <ul> <li v-for="item in someDa
{
"test": "example",
"data": [
{
"name": "My Name",
"address": "My Address"
}
]
}
Vue JS html
{{ someData['name'] }}
<ul>
<li v-for="item in someData" v-bind:key="item.id">
{{ item }}
</li>
</ul>
我得到的结果是:
created() {
this.$http.get('http://localhost:3000/properties.json').then(response => {
// get body data
this.someData = response.body
}, response => {
// error callback
});
}
正如您所看到的,在我的v-for中,简单地指定item会抓取这里的每个项,但我希望能够执行类似{{item['name']}和{{item['address']}}的操作,您可以简单地执行以下操作:
<template v-for="(item, key) in someData">
<span v-if="key == 'address'">{{item}}</span>
</template>
{{item}}
您只需执行以下操作:
<template v-for="(item, key) in someData">
<span v-if="key == 'address'">{{item}}</span>
</template>
{{item}}
主要问题在JSON文件中。VueJS v-for正在迭代JSON文件中的键,在本例中,{{item}}将获得名称和地址。这就是您输出的原因
要解决这个问题
将JSON文件格式化为
[{name: 'John', address: 'Jane'}]
执行此操作时,VueJS v-for将在JSON数组上迭代,{{item}将获得值{name:'John',address:'Jane'},现在您可以执行{{item.name}{{item.address}
一个例子
编辑:更新API请求代码
created() {
this.$http.get('http://localhost:3000/properties.json').then(response => {
// get body data
this.someData = [response.body]
}, response => {
// error callback
});
}
主要问题在JSON文件中。VueJS v-for正在迭代JSON文件中的键,在本例中,{{item}}将获得名称和地址。这就是您输出的原因 要解决这个问题 将JSON文件格式化为
[{name: 'John', address: 'Jane'}]
执行此操作时,VueJS v-for将在JSON数组上迭代,{{item}将获得值{name:'John',address:'Jane'},现在您可以执行{{item.name}{{item.address}
一个例子
编辑:更新API请求代码
created() {
this.$http.get('http://localhost:3000/properties.json').then(response => {
// get body data
this.someData = [response.body]
}, response => {
// error callback
});
}
关键的一点是
v-for=“item in someData”
是someData
对象组件视图的一部分,即“John”
和“Jane”
根据您的具体目标,您应该将JSON重新格式化为对象数组(如@F.bernal所建议),或者更改
v-for
指令的逻辑。关键点是v-for=“item in someData”
是someData
对象组件视图中的一部分,即“John”
和“Jane”
根据您的具体目标,您应该将JSON重新格式化为一个对象数组(如@F.bernal所建议),或者更改
v-for
指令的逻辑。请指定someData
指的是什么,someData
仅用于测试目的。我刚刚用一些新的JSON数据更新了上面的问题,因为我在这部分遇到了问题。请指定someData
所指的内容。嗨,someData
仅用于测试目的。我刚刚用一些新的JSON数据更新了我上面的问题,因为我在这方面遇到了麻烦谢谢,但我的JSON将来自API或JSON文件,我将如何适应它?太棒了!非常感谢你。我刚刚想到,我的数据将包含这样的倍数:```{“test”:“example”,“data”:[{“name”:“my name”,“address”:“my address”}]}```所以现在,我试着做:{{item.data.name}}},但没有成功?有什么建议吗?通过JSON修改,你必须更新你创建的()方法来满足您的需要。在这种情况下,在不查看代码的情况下,我认为您将添加这个。this.someData=response.body.data.Thank,但是我的json将来自一个API或json文件,我将如何适应它?太棒了!非常感谢你。我刚刚想到,我的数据将包含这样的倍数:```{“test”:“example”,“data”:[{“name”:“my name”,“address”:“my address”}]}```所以现在,我试着做:{{item.data.name}}},但没有成功?有什么建议吗?通过JSON修改,你必须更新你创建的()方法来满足您的需要。在这种情况下,在不查看代码的情况下,我认为您将添加这个。this.someData=response.body.data。