vuejs2.0 提示Cannot read property 'push' of undefined

new Vue({

            el: '#swiperBanner',
            data: {
                slideList : []
            },
            created: function () {
                this.getSlider();
            },
            methods: {
                getSlider : function () {
                    $.getJSON(basePath+'slider/index.html',{'id':13}, this.getData);
                },
                getData : function (data) {
                    if(data.code==1){
                        if(!common.isNullOrEmpty(data.info.list)){
                            console.log(this.slideList);
                            $.each(data.info.list, function(i,item){
                                this.slideList.push(item);
                            });
                            //this.slideList = data.info.list;
                        }
                    }
                }
            },
            updated: function () {
                new Swiper('.swiper-banner', {
                    pagination: '.swiper-pagination',
                    paginationClickable: true
                });
            }
        });
        

这是一段正常的读取数据的代码,为什么在填充数据的时候会提示Cannot read property 'push' of undefined,为什么没有push属性呢?

阅读 16k
评论 2016-11-04 提问
    3 个回答

    this指向的问题,你在each的函数里面,当前的this并不是指向的vue的,所以没有找到slideList这个变量,自然就没有push这个属性了

    getData : function (data) {
        var _this = this;
        if(data.code==1){
            if(!common.isNullOrEmpty(data.info.list)){
                console.log(this.slideList);
                $.each(data.info.list, function(i,item){
                    _this.slideList.push(item);
                });
                //this.slideList = data.info.list;
            }
        }
    }
      • 4.5k
      data () {
        return {
          slideList : []
        }
      }

      这样写 data

        很明显 this指向错误

          撰写回答

          登录后参与交流、获取后续更新提醒