vue.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > vue.js > vue mounted获取对象为null

解决在vue的mounted中获取对象为null问题

作者:沛哥儿

这篇文章主要介绍了解决在vue的mounted中获取对象为null问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

背景

因为 需要在项目中需要将获取的列表对象赋值给另外一个控件。

所以使用了mounted

按照vue的生命周期,在create()中增加了获取数据的getList()方法,然后赋值。

然后在mounted()中增加了对赋值对象的相关操作。

vue生命周期图

问题

按照理想的情况,应该可以将赋值后的对象进行相关操作的。

但是实际结果却是打脸了,获取不到对象数据。

console.log打印出来的结果为null。

按照道理来讲,不应该哈。

解决方案

度娘了下,发现还真是自己的问题,因为在create()中,走的是远程ajax的异步调用。

vue初始化的时候,是按照顺序一路下来的,异步的东西是不会等待你的,所以初始化的data中,当前对象是什么,就会同步传递过来的。

既然找到了真凶,那么处理的方案一般就是下面的方式了。

1、不走mounted(),使用watch的监听方式来处理。

watch: {
     initEditData(){
       //TODO 数据赋值 张三 2022-05-09
     }
  }

2、用await来处理,await一般和ansyc一起的,感兴趣的可以自己去摸下。

/**
* 动态赋值
*/
async function testSetVal() {
    //在此等待数据处理完成
    let valObj= await getList();
    console.log(valObj);
}

总结

涉及到异步,一定要考虑并行的问题

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文