为了账号安全,请及时绑定邮箱和手机立即绑定

vue.js 遇到的一个奇怪的问题,帮忙看看

vue.js 遇到的一个奇怪的问题,帮忙看看

海绵宝宝撒 2018-12-20 19:14:27
这是一个router中components的template:<template>  <div class="readerView">    <div id="area"></div>  </div></template><script>  export default {    name: 'readerView',    props: {      bookDetail: Object,    },    data () {      return {      }    },    watch: {      'bookDetail' : 'display'    },    methods: {      display() {        var area = document.getElementById("area");        console.log("in display, area: ", area);      }    },    mounted () {      var area = document.getElementById("area");      console.log("in mounted, area: ", area);    },  }</script><style>@import url("../style/basic.css");.readerView {  position: absolute;  width: 100%;  height: 100%;}</style>在该组件的mounted函数中调用document.getElementById("area");可以正常得到该divdisplay中同样的调用document.getElementById("area");结果竟然返回空???
查看完整描述

1 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

原因就是


watch: {

      'bookDetail' : 'display'

    },

执行的太早了,dom没有渲染完全,改成


watch: {

      bookDetail(){

          setTimeout(()=>{

              this.display()

          },20);

      }

    }

另外为什么不用ref来取dom呢?


查看完整回答
反对 回复 2019-01-28
  • 1 回答
  • 0 关注
  • 443 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信