vue data有值,但是页面{{}} 取不到值的解决
我的问题出在js引入的顺序不对,导致不能正常显示vue中的值
正确的顺序应该是:
先引入vue的js--------html代码-----最后引入自己写的js
补充知识:vue中子组件的created、mounted生命周期钩子中获取不到props中的值问题
父子组件通信
这个很简单,父组件中使用v-bind绑定传送,子组件使用props接收即可。
例如:在父组件中
子组件中:
exportdefault{ props:{ type:Array, default(){ return[] } } }
这种情况下你的Data值是固定的,子组件的methods中想要取到props中的值,直接使用this.chartData即可。
但是有的情况下,你的Data里面的值并不是固定的,而是动态获取的,这种情况下,你会发现methods中是取不到你的Data的,或者取到的一直是默认值。
解决办法:
这种情况我是使用watch处理
监听Data的值,当它由空转变时就会触发,这时候就能取到了,拿到值后要做的处理方法也需要在watch里面执行。
exportdefault{ props:['Data'], data(){ return{ cData:[] } }, watch:{ //正确给Data赋值的方法 chartData:function(newVal,oldVal){ this.cData=newVal;//newVal即是chartData newVal&&this.draw();//newVal存在的话执行draw函数 } }, methods:{ draw(){ //执行其他逻辑 } }, mounted(){ //在created、mounted这样的生命周期,给this.Data赋值会失败,错误赋值方法 } }
//总结
出现这种情况的原因,因为父组件中要传递的props属性是通过发生ajax请求回来的,请求的这个过程是需要时间的,但是子组件的渲染要快于ajax请求过程,所以此时created、mounted这样的只会执行一次的生命周期钩子,已经执行了,但是props还没有流进来(子组件),所以只能拿到默认值。
以上这篇vuedata有值,但是页面{{}}取不到值的解决就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。