Q_LMTr
2021-07-06 16:51
采纳率: 100%
浏览 198

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)
                })
              })
    
            }
    
    1 打赏 评论
  • 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延时处理,有时调用摄像头等必须这样实现。

    1 打赏 评论

相关推荐 更多相似问题