在 vue js 中迭代 axios.get 请求中的对象
Iterating over an object inside an axios.get request in vue js
我在循环对象时遇到问题(来自 get 请求的 json 响应)。
在vue js方法中不能使用for ... in ...吗?或者在 axios 方法中?
即使我像这样将循环替换为虚拟循环,我的控制台也没有输出。
fetchData(id){
this.$Progress.start()
axios.get(base_path+'/admin_api/testDetailByUser/'+id)
.then(response => {
ob ={"a":1,"b":2,"c":3}
for (i in ob){
console.log(ob[i]);
}
this.$Progress.finish()
}).catch(error=>{
this.$Progress.fail()
});
},
实际代码看起来更像这样:
export default {
data(){
return {
form : new Form({
id :'',
examiner_id :[],
}),
}
},
methods:{
fetchData(id){
this.$Progress.start()
axios.get(base_path+'/admin_api/testDetailByUser/'+id)
.then(response => {
this.myData = response.data;
$('#detailDiv').modal('show');
this.form.examiner_id = [];
for (property in this.myData){
this.form.examiner_id.push(this.myData[property].id);
}
this.$Progress.finish()
}).catch(error=>{
this.$Progress.fail()
});
},
与以下 html 摘录
<form>
<tr v-for="(mailPdf,i) in mailPdfs" :key="mailPdf.id">
<select v-model="form.examiner_id[i]" name="examiner_id[i]" id="examiner_id" :value="mailPdf.examiner.id">
<option value="" disabled>choose examiner</option>
<option :value="mailPdf.examiner.id">{{mailPdf.examiner.name}} - current examiner</option>
<option v-for="testExaminer in filteredTestExaminer" :value="testExaminer.examiner.id">{{ testExaminer.examiner.name }}</option>
</select>
</tr>
</form>
想法是为 <select>
输入设置默认值,因为 selected="selected"
在 vuejs 上不起作用,但我不能将它输入 data(){
因为它每个单独的获取请求都有一个新值。
提前致谢!
你可以用 Object. values()
你的代码应该是这样的
...
for (property in Object.values(this.myData)){
this.form.examiner_id.push(this.myData[property].id);
}
...
或者只使用 forEach()
...
Object.values(this.myData).forEach(item => this.form.examiner_id.push(item.id))
...
我在循环对象时遇到问题(来自 get 请求的 json 响应)。 在vue js方法中不能使用for ... in ...吗?或者在 axios 方法中? 即使我像这样将循环替换为虚拟循环,我的控制台也没有输出。
fetchData(id){
this.$Progress.start()
axios.get(base_path+'/admin_api/testDetailByUser/'+id)
.then(response => {
ob ={"a":1,"b":2,"c":3}
for (i in ob){
console.log(ob[i]);
}
this.$Progress.finish()
}).catch(error=>{
this.$Progress.fail()
});
},
实际代码看起来更像这样:
export default {
data(){
return {
form : new Form({
id :'',
examiner_id :[],
}),
}
},
methods:{
fetchData(id){
this.$Progress.start()
axios.get(base_path+'/admin_api/testDetailByUser/'+id)
.then(response => {
this.myData = response.data;
$('#detailDiv').modal('show');
this.form.examiner_id = [];
for (property in this.myData){
this.form.examiner_id.push(this.myData[property].id);
}
this.$Progress.finish()
}).catch(error=>{
this.$Progress.fail()
});
},
与以下 html 摘录
<form>
<tr v-for="(mailPdf,i) in mailPdfs" :key="mailPdf.id">
<select v-model="form.examiner_id[i]" name="examiner_id[i]" id="examiner_id" :value="mailPdf.examiner.id">
<option value="" disabled>choose examiner</option>
<option :value="mailPdf.examiner.id">{{mailPdf.examiner.name}} - current examiner</option>
<option v-for="testExaminer in filteredTestExaminer" :value="testExaminer.examiner.id">{{ testExaminer.examiner.name }}</option>
</select>
</tr>
</form>
想法是为 <select>
输入设置默认值,因为 selected="selected"
在 vuejs 上不起作用,但我不能将它输入 data(){
因为它每个单独的获取请求都有一个新值。
提前致谢!
你可以用 Object. values()
你的代码应该是这样的
...
for (property in Object.values(this.myData)){
this.form.examiner_id.push(this.myData[property].id);
}
...
或者只使用 forEach()
...
Object.values(this.myData).forEach(item => this.form.examiner_id.push(item.id))
...