解决vue页面渲染但dom没渲染的操作


Posted in Javascript onJuly 27, 2020

我就废话不多说了,大家还是直接看代码吧~

this.$nextTick(() => {
            $("select[name='ddlCostCenter']").select2({
              language: "zh-CN"
            });
          });

补充知识:vue+Echarts动态数据已经赋值,但是无法渲染页面的问题

最近用vue+Echarts想做一个饼状统计图,但是数据明明已经绑定完毕,但是页面渲染一直没有效果,最终才发现问题所在,自己还是个新手,主要对vue还不是很熟悉。废话不说,接下来看我的代码:

正常的给个div的大小

<div>
  <div id="echartss" :style="{width: '100%', height: '600px'}"></div>
 </div>

接下来是option部分:

echarts1_option:{
      backgroundColor: '#45515a', //背景颜色
      //标题
      title: {
       text: '订单中保险公司所占的比例',
       subtext: '饼图示例',
       left: 'center',
       top: 20,
       textStyle: {
        color: '#ccc',
        fontStyle: 'italic'//标题字体
       }
      },
      //弹窗,响应鼠标指向,显示具体细节
      tooltip : {
       trigger: 'item',//以具体项目触发弹窗
       formatter: "{a} <br/>{b} : {c} ({d}%)",
      },
      //图例,选择要显示的项目
      legend:{
       orient:'vertical',
       left:'left',
       textStyle:{
        color:'#c8c8d0'
       },
       data:['安心','安盛天平','中华联合保险','中国太平洋保险','中国人保财险','平安车险'] //注意要和数据的name相对应
      },
      //工具箱
      toolbox:{
       show:true,//显示工具箱
       feature:{
        dataView:{show:true}, //以文字形式显示数据
        restore:{show:true},  //还原
        //dataZoom:{show:true}, //区域缩放
        saveAsImage:{show:true}, //保存图片
        //magicType:{type:['line','bar']}//动态数据切换,数据显示可以在该规定内容中切换显示方式,
       }
      },
      /*//视觉映射组件,将数据映射到视觉元素上
      visualMap: {
       show: false,
       min: 1,
       max: 2,
       dimension: 0, //选取数据的维度,如人数据:[身高,体重],则1代表将体重进行映射,默认值为数组的最后一位
       // seriesIndex: 4, //选取数据集合中的哪个数组,如{一班},{二班},默认选取data中的所有数据集
       inRange: {
        //选定了要映射的对象,用inRange详细写要渲染的具体细节,[x,y]中x指最小值对应的量(亮度,饱和度等),y指最大值对应的量,其余的按各自value线性渲染
        color:['red'],
        colorLightness: [0,1],
        colorSaturation:[0,1]
       }
      },*/
      //数据
      series : [
       {
        name: '成交数量',
        type: 'pie',
        radius: '55%',
        center: ['50%', '50%'],
        data:[

        ].sort(function (a, b) {
         return a.value - b.value;
        }),

        roseType: 'radius',//角度和半径展现百分比,'area'只用半径展现
        label: { //饼图图形的文本标签
         normal: { //下同,normal指在普通情况下样式,而非高亮时样式
          textStyle: {
           color: 'rgba(255, 255, 255, 0.3)'
          }
         }
        },
        labelLine: { //引导线样式
         normal: {
          lineStyle: {
           color: 'rgba(255, 255, 255, 0.3)'
          },
          smooth: 0.5, //0-1,越大越平滑弯曲
          length: 10, //从块到文字的第一段长
          length2: 20 //拐弯到文字的段长
         }
        },

        itemStyle: { //图例样式
         normal: {
           //color: '#97413c',
          shadowBlur: 50,//阴影模糊程度
          shadowColor: 'rgba(0, 0, 0, 0.5)',//阴影颜色,一般黑

         }
        },
        animationType: 'scale', //初始动画效果,scale是缩放,expansion是展开
        animationEasing: 'elasticOut', //初始动画缓动效果
        animationDelay: function (idx) { //数据更新动画时长,idx限定了每个数据块从无到有的速度
         return Math.random() * 200;
        }


       }
      ],
      color: ['#97858c','pink','green','yellow','orange','#97813c'],
     },

接下来看init代码

init(){
     // 基于准备好的dom,初始化echarts实例
     let myChart = echarts.init(document.getElementById('echartss'))
     // 绘制图表,this.echarts1_option是数据
     myChart.setOption(this.echarts1_option,true)
    },

然后是给动态数据赋值代码(从后台接口取得的数据)

drawline() {
     // 数据初始化
     API.account.getAccount().then(({data}) => {
      if (data && data.code == 0) {
       this.echarts1_option.series[0].data=data.data.list;
      } else {
       this.$Message.error(data.msg);
      }
     }).catch((data) => {
      this.$Message.error('连接失败,请检查网络!');
     });

    },

到目前为止,页面的结果是:

解决vue页面渲染但dom没渲染的操作

页面完全没有效果:

在加上下面代码后:

//数据自动刷新,必然需要一个监听机制告诉Echarts重新设置数据
  watch: {
   //观察option的变化
   echarts1_option: {
    handler(newVal, oldVal) {
     if (this.myChart) {
      if (newVal) {
       this.myChart.setOption(newVal);
      } else {
       this.myChart.setOption(oldVal);
      }
     } else {
      this.init();
     }
    },
    deep: true //对象内部属性的监听,关键。
   }
  },

我们再看看运行结果:

解决vue页面渲染但dom没渲染的操作

数据虽然刷新了,但是我们的Echart's组件却不知道,必须有个watch过程。

以上这篇解决vue页面渲染但dom没渲染的操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript 读书笔记索引贴
Jan 11 Javascript
php上传图片并给图片打上透明水印的代码
Jun 07 Javascript
JavaScript表达式:URL 协议介绍
Mar 10 Javascript
JavaScript中json使用自己总结
Aug 13 Javascript
jquery cookie的用法总结
Nov 18 Javascript
jQuery背景插件backstretch使用指南
Apr 21 Javascript
jQuery解析Json实例详解
Nov 24 Javascript
详解js中Number()、parseInt()和parseFloat()的区别
Dec 20 Javascript
深入理解ES6学习笔记之块级作用域绑定
Aug 19 Javascript
JS排序算法之希尔排序与快速排序实现方法
Dec 12 Javascript
微信小程序实现图片上传
May 23 Javascript
Vue项目接入Paypal实现示例详解
Jun 04 Javascript
解决VUE mounted 钩子函数执行时 img 未加载导致页面布局的问题
Jul 27 #Javascript
Element Breadcrumb 面包屑的使用方法
Jul 26 #Javascript
Element PageHeader页头的使用方法
Jul 26 #Javascript
Element Dropdown下拉菜单的使用方法
Jul 26 #Javascript
Vue中的this.$options.data()和this.$data用法说明
Jul 26 #Javascript
解决vue的router组件component在import时不能使用变量问题
Jul 26 #Javascript
Element Steps步骤条的使用方法
Jul 26 #Javascript
You might like
yii2利用自带UploadedFile实现上传图片的示例
2017/02/16 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
vmware linux系统安装最新的php7图解
2019/04/14 PHP
PHP实现单条sql执行多个数据的insert语句方法
2019/10/11 PHP
javascript引用对象的方法
2007/01/11 Javascript
JS Array对象入门分析
2008/10/30 Javascript
javascript预览上传图片发现的问题的解决方法
2010/11/25 Javascript
javascript 随机展示头像实现代码
2011/12/06 Javascript
JS正则表达式获取分组内容的方法详解
2013/11/15 Javascript
jquery教程ajax请求json数据示例
2014/01/13 Javascript
Javascript中的方法和匿名方法实例详解
2015/06/13 Javascript
jQuery实现仿新浪微博浮动的消息提示框(可智能定位)
2015/10/10 Javascript
深入浅析NodeJs并发异步的回调处理
2015/12/21 NodeJs
基于jquery实现表格无刷新分页
2016/01/07 Javascript
关于ES6的六个小特性(二)
2017/02/20 Javascript
利用node.js写一个爬取知乎妹纸图的小爬虫
2017/05/03 Javascript
AngularJS实现的输入框字数限制提醒功能示例
2017/10/26 Javascript
深入了解javascript 数组的sort方法
2018/06/01 Javascript
vue.js中ref及$refs的使用方法解析
2019/10/08 Javascript
[08:02]DOTA2牵红线 zhou神抱得美人归
2014/03/22 DOTA
Python urlopen 使用小示例
2008/09/06 Python
跟老齐学Python之有容乃大的list(3)
2014/09/15 Python
python使用BeautifulSoup分页网页中超链接的方法
2015/04/04 Python
Python使用迭代器打印螺旋矩阵的思路及代码示例
2016/07/02 Python
利用Tkinter(python3.6)实现一个简单计算器
2017/12/21 Python
解决python删除文件的权限错误问题
2018/04/24 Python
python实现时间o(1)的最小栈的实例代码
2018/07/23 Python
python实现操作文件(文件夹)
2019/10/31 Python
Russell Stover巧克力官方网站:美国领先的精美巧克力制造商
2016/11/27 全球购物
医生自荐信
2013/10/11 职场文书
个人自我鉴定怎么写
2013/10/28 职场文书
珠宝店促销方案
2014/03/21 职场文书
会员活动策划方案
2014/08/19 职场文书
竞选班干部演讲稿500字
2014/08/20 职场文书
无刑事犯罪记录证明范本
2014/09/29 职场文书
如何撰写促销方案?
2019/07/05 职场文书