在 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))

...