如何解决“Uncaught(in promise)TypeError:response.body.forEach不是函数”? (vue.js 2)

时间:2017-02-10 01:04:40

标签: javascript jquery vue.js vuejs2 vue-component

我的组件vue.js是这样的:

<script>
  export default{
    name: 'CategoryBsSelect',

    template: '\
      <select class="form-control" v-model="selected" required>\
        <option v-for="option in options" v-bind:value="option.id" v-bind:disabled="option.disabled">{{ option.name }}</option>\
      </select>',

    //props: {list: {type: String, default: ''}},

    mounted() {
        this.fetchList();
    },

    data() {
      return {
        selected: '',
        options: [{id: '', name: 'Select Category'}]
      };
    },

    methods: {
        fetchList: function() {
            this.$http.post(window.BaseUrl+'/member/category/list').then(function (response) {
                //this.$set('list', response.data);
                console.log(JSON.stringify(response.body))
                response.body.forEach(function(item){
                    this.$set(this.options, item.id, item);
                }, this);
            });
        },
    }

  };

</script>

console.log(JSON.stringify(response.body))的结果:

  

{“20”:“类别1”,“21”:“类别2”,“22”:“类别3”}

我希望显示select值的响应。但是当执行时,在控制台上存在如下错误:

  

未捕获(承诺)TypeError:response.body.forEach不是   功能       在VueComponent。

有没有人可以帮助我?

1 个答案:

答案 0 :(得分:0)

使用

Object.keys(response.body).map(function(key) {
    this.$set(this.options, key, response.body[key]);
});