Q_LMTr 2021-07-06 16:51 采纳率: 50%
浏览 792
已采纳

vue中methods有值但是传到mounted却是undefined,这是为什么 该怎么办?

vue中methods有值但是传到mounted却是undefined,这是为什么 该怎么办?

mounted() {
      this.$nextTick(() => {
        getPeixianMapData().then(res => {
          let top10Datas = this.getPeixianMapValue()
          console.log('top10Datas', top10Datas)
          this.initChart(top10Datas)
        })
      })
},
methods: {
      getPeixianMapValue() {
        getPeixianMapValue(0, 10000, {}).then(res => {
          let rd = res.data.content
          function compare(property){
            return function(a,b){
              let value1 = a[property];
              let value2 = b[property];
              return value2 - value1;        
            }
          }
          let sortData = rd.sort(compare('value'))
          let top10Data = []
          for (let i = 0; i < 10; i++) {
            top10Data.push(sortData[i])
          }
          console.log('top10', top10Data)
          return top10Data
        })
      },

      ......
}

img

  • 写回答

6条回答 默认 最新

  • gzczzzzzz 2021-07-06 17:29
    关注
            getPeixianMapValue() {
                return new Promise((resolve) => {
                getPeixianMapValue(0, 10000, {}).then(res => {
                  let rd = res.data.content
    
                  function compare(property) {
                    return function (a, b) {
                      let value1 = a[property];
                      let value2 = b[property];
                      return value2 - value1;
                    }
                  }
                  let sortData = rd.sort(compare('value'))
                  let top10Data = []
                  for (let i = 0; i < 10; i++) {
                    top10Data.push(sortData[i])
                  }
                  console.log('top10', top10Data)
                  resolve(top10Data)
                })
              })
    
            }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • gzczzzzzz 2021-07-06 17:00
    关注

    getPeixianMapValue 是异步的还是同步的 如果是异步的 那你肯定拿不到

    评论
  • gzczzzzzz 2021-07-06 17:07
    关注

    想返回异步结果 肯定不能直接写return 哦

    评论
  • hzx-web 2021-07-06 17:10
    关注

    getPeixianMapValue都是异步的,return怎么可能拿到结果,可以返回promise

    评论
  • Q_LMTr 2021-07-06 20:32
    关注

    在各个大佬的帮助下 终于能运行出来了
    最终的解决方案还挺简单的

    mounted() {
          this.$nextTick(() => {
            getPeixianMapData().then(res => {
              this.getPeixianMapValue().then(res => {
                let top10Datas = res
                this.initChart(top10Datas)
              })
            })
          })
        },
    
    methods: {
          getPeixianMapValue() {
            return getPeixianMapValue(0, 10000, {}).then(res => {
              let rd = res.data.content
    
              function compare(property) {        //排序
                return function (a, b) {
                  let value1 = a[property];
                  let value2 = b[property];
                  return value2 - value1;        //倒序   value1-value2  正序
                }
              }
    
              let sortData = rd.sort(compare('value'))
              let top10Data = []
              for (let i = 0; i < 10; i++) {
                top10Data.push(sortData[i])
              }
              return top10Data
            })
          },
    }
    

    就通过了两个 return就传出来了 (虽然我也不懂这是为啥 有大佬看到也可以在下面帮忙解释) 主要还是上面mounted需要通过then调用这才是关键步骤

    评论
  • 关注

    把mounted换为created试试,一般这里调用都没有问题,如果还有问题可以考虑用settimeout延时处理,有时调用摄像头等必须这样实现。

    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 div editable中的光标问题
  • ¥15 mysql报错1415Not allowed to return a result set from a trigger 不知如何修改
  • ¥60 Python输出Excel数据整理,算法较为复杂
  • ¥15 看一下这个,可以商量
  • ¥15 回答几个问题 关于数据库
  • ¥15 51单片机串口通信问题,未完成且要修改
  • ¥15 百鸡问题 c++编程问题(相关搜索:输出数据)
  • ¥30 如何在CMD中设置代理
  • ¥15 我有一块薛定谔的硬盘
  • ¥15 微信小游戏开发2D碰撞检测问题