vue v-html 动态显示踩坑

问题

在这里插入图片描述
在这里插入图片描述

想要实现这个功能,鼠标移动到getall图标(cytoscape.js),能显示该位置的属性。部分代码如下,但结果是怎么也无法显示,但打印的确是都有数据的。

    <div id="bottom_nodeInfo" v-html="propertyinfo">
    </div>

<style>
#bottom_nodeInfo {
  position: absolute;
  left: 0px;
  bottom: 0px;
  right: 0px;
  z-index: 2;
  margin: 0px;
  padding: 7px 15px;
}
</style>
  data () {
    return {
      propertyinfo: '',
      cy.on('mouseover', 'node', function (event) {
        var ele = event.target
        this.propertyinfo = '<div>' + ele.data('name') + '</div>'
        console.log('tapped ' + this.propertyinfo)
      })

问题排查

调试

作为前端新手,只会调试console.log打印调试。尝试了下vue官网介绍的各种调试方式,发现都异常麻烦,最后还是使用最简单的debugger

  methods: {
    createCytoscape () {
      const cy = cytoscape({
      ...此处省略
      cy.on('mouseover', 'node', function (event) {
        var ele = event.target
        var aa = this.propertyinfo
        debugger
        this.propertyinfo = '<div>' + ele.data('name') + '</div>'
        debugger
        console.log('tapped ' + this.propertyinfo)
      })

打开google F12 运行时,直接选择this.propertyinfo 可以发现为 undefined。这说明这里面的函数引用不到propertyinfo 该变量。
在这里插入图片描述
这个调试非常好用,可以通过scope 看其他数据,也可以通过watch 查看指定的数据,也可以直接在代码里选择整个变量,自动显示值
在这里插入图片描述
在这里插入图片描述

问题解决

this作用域
查了一些资料发现,函数下如果有子函数的化,this作用域只在改子函数,所以需要将代码改为

      const that = this
      cy.on('mouseover', 'node', function (event) {
        var ele = event.target
        var aa = that.propertyinfo
        debugger
        console.log('fef' + this.propertyinfo)
        that.propertyinfo = '<div>' + ele.data('name') + '</div>'
        debugger
        console.log('tapped ' + that.propertyinfo)
      })

这次显示是对了。
在这里插入图片描述
最后效果:
在这里插入图片描述

参考文献:

https://blog.csdn.net/weixin_51641718/article/details/123511487

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值