0

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属性呢?

2016-11-04 提问
3 个回答
1

已采纳

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;
        }
    }
}
0
data () {
  return {
    slideList : []
  }
}

这样写 data

0

很明显 this指向错误

撰写答案

推广链接