Vue中methods封装的方法调用问题

问题如下面注释,简单的说就是我在methods中的一个方法中调用另一个方法,但是调用的方法中并没有成功操作我的data中的值,这个data中的值我是当作参数传进去的。

 data(){
    return {
        loadList:[]
    }
 },
 methods: {
    //封装了一个loadingGet方法,使用传参的方式给其他地方调用
    loadingGet:function(loaddata,resdata,loadnum){
        if(loaddata.length + loadnum > resdata.length){
              loaddata = resdata.slice(0,resdata.length);
                
              if(loaddata.length == resdata.length){
                this.loading = false;
                this.finished = true;
              }else {
                this.finished = false;
              }
            }else{
                loaddata = resdata.slice(0,loaddata.length + loadnum)
                this.loading = false;
                
                console.log(loaddata)//打印出来是我想要的数据
                console.log(this.loadList)//打印出来为undefined
            }

    },
    onLoad(){
      this.loading = true;
      axios.get("https://XXX")
      .then(res=>{
        console.log(res.data);
        let goods = res.data;
        if(this.tabIndex == 0){
          this.loadingGet(this.loadList,goods,6);//这里调用函数,传入参数没有问题
          console.log(this.loadList)//打印出来却为空数组
        }
         
      });
      
    },
  },
阅读 7k
4 个回答
loaddata = resdata.slice(0,loaddata.length + loadnum)
this.loading = false;
this.loadList = loaddata;//**加上这一行**
console.log(loaddata)
console.log(this.loadList)

楼上说的对,没有给this.loadList赋值

vue methods中的方法不能用箭头函数,因为箭头函数本身没有this,你的console.log(this.loadList)为undefined就是这个原因

我好像没有看到你的赋值啊

loadingGet: function(loaddata,resdata,loadnum) {
    // 你的操作
    // 最后返回你要的数据
    return loaddata
}
onLoad () {
    this.loadList = this.loadingGet(this.loadList,goods,6);//这里调用函数,传入参数没有问题
}

你用箭头函数会使得this指向改变, 你this没指向vue实例那就不可能修改到 data、 methods 等等方法了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏