亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

AntV F2和vue-cli構(gòu)建移動端可視化視圖過程詳解

 更新時間:2019年10月08日 11:21:14   作者:有夢想的咸魚前端  
這篇文章主要介紹了AntV F2和vue-cli構(gòu)建移動端可視化視圖過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

AntV F2是螞蟻金服旗下的一個專注于移動,開箱即用的可視化解決方案,完美支持 H5 環(huán)境同時兼容多種環(huán)境(Node, 小程序,Weex),完備的圖形語法理論,滿足你的各種可視化需求,專業(yè)的移動設(shè)計指引為你帶來最佳的移動端圖表體驗。

AntV F2官方文檔地址:https://antv.alipay.com/zh-cn/f2/3.x/

話不多說,直接進入正題:

Antv F2官方比較友好,給我們提供了兩種方式方便我們使用,分別是CDN方式(引入在線資源 <script src="https://gw.alipayobjects.com/os/antv/assets/f2/3.3.8/f2.min.js"></script>)和npm安裝方式,因為項目是vue-cli搭建的,同時CDN方式引入比較簡單,引入文件即可使用,所以在項目中使用的是npm安裝;

安裝命令(必須在項目對應(yīng)的文件夾路徑下運行):

npm install @antv/f2 --save

安裝完依賴之后接著就是需要引用到項目中,這里有個坑,官方提供的引用方式在vue里面是會報錯的,官方提供的方式是下圖

 

如果在項目中是 import F2 from "@antv/f2" 這樣引用是會報語法錯誤的,報錯信息為:“chart.pieLabel is not a function”,所以安裝方式建議修改為

import F2 from "@antv/f2/lib/index-all",這樣引用是可以正常使用不報錯的,親測可用;

安裝完依賴和引用文件資源之后,就可以直接進行圖表配置和開發(fā)了;我在項目中用到了環(huán)形圖,直接進入環(huán)形圖Demo案例界面看看Demo,

https://antv.alipay.com/zh-cn/f2/3.x/demo/index.html#_%E9%A5%BC%E5%9B%BE,

首先使用的時候視圖層很簡單,一個大div包住canvas標(biāo)簽即可

 <div class="chart-wrapper">
  <canvas id="mountNode"></canvas>
 </div>

接著就是數(shù)據(jù)邏輯層根據(jù)文檔介紹:

 //模擬數(shù)據(jù),也可以根據(jù)ajax進行請求后臺數(shù)據(jù) 
var data = [{
  const: 'const',
  type: '交通出行',
  money: 51.39
 }, {
  const: 'const',
  type: '飲食',
  money: 356.68
 }, {
  const: 'const',
  type: '生活日用',
  money: 20.00
 }, {
  const: 'const',
  type: '住房繳費',
  money: 116.53
 }];
  //配置視圖id與上面html對應(yīng)
 var chart = new F2.Chart({
  id: 'mountNode',
  pixelRatio: window.devicePixelRatio
 });
  //定義渲染數(shù)據(jù)源
 chart.source(data);
  //定義圖表類型樣式,其中radius和innerRadius可以更改環(huán)形的大小
 chart.coord('polar', {
  transposed: true,
  radius: 0.9,
  innerRadius: 0.5
 });
 chart.axis(false);
 //圖表圖例
 chart.legend(false);
 // 圖表提示信息
 chart.tooltip(false);
 //這里可以配置更改環(huán)形中心文字
 chart.guide().html({
  position: ['50%', '50%'],
  html: '<div style="text-align: center;width:150px;height: 50px;">\n   <p style="font-size: 12px;color: #999;margin: 0" id="title"></p>\n   <p style="font-size: 18px;color: #343434;margin: 0;font-weight: bold;" id="money"></p>\n   </div>'
 });
 // 配置圖表顏色樣式和定位
 chart.interval().position('const*money').adjust('stack').color('type', ['#1890FF', '#13C2C2', '#2FC25B', '#FACC14']);
  //配置一些基本的文本信息及樣式
 chart.pieLabel({
  sidePadding: 30,
  activeShape: true,
  label1: function label1(data) {
   return {
    text: '¥' + data.money,
    fill: '#343434',
    fontWeight: 'bold'
   };
  },
  label2: function label2(data) {
   return {
    text: data.type,
    fill: '#999'
   };
  },
  //點擊事件
  onClick: function onClick(ev) {
   var data = ev.data;
   if (data) {
    $('#title').text(data.type);
    $('#money').text(data.money);
   }
  }
 });
 // 最后渲染即可
 chart.render();

就這樣配置,就可以了,但是有個問題我們在vue中是不能直接這么寫的,所以我們需要把這些代碼定義在一個方法里放在methods對象里面,然后掛載時執(zhí)行即可,效果圖如下:

這里有個坑,就是我們用AntV F2的時候不能跟之前的習(xí)慣一樣直接放在mounted函數(shù)中執(zhí)行,不然會造成圖表處空白,刷新一下才能好這種bug,出現(xiàn)這個問題的原因昨天下午想了很久沒想通沒有得到解決,早上來公司的時候突然恍然大悟:造成這種bug的原因其實很簡單,就是因為Ant F2是jquery方式寫的,并且還有操作DOM,我們直接在mounted上直接執(zhí)行方法就會帶來一個問題就是js已經(jīng)執(zhí)行了,但是DOM元素還沒渲染完成,圖表沒有數(shù)據(jù),所以才會空白,并且mounted方法是加載完成再次進入會存入緩存的,所以才會刷新一下才能好;我這里的解決方案是直接設(shè)置個定時器setTimeout,直接延遲1秒左右執(zhí)行方式就可以解決;

再簡單介紹一個折線圖的使用方法:

HTML視圖層代碼:

 <div class="chart-wrapper">
  <canvas id="mountNode"></canvas>
 </div>

js數(shù)據(jù)邏輯層代碼:

 //模擬數(shù)據(jù)
var data = [{
  day: '周一',
  value: 300
 }, {
  day: '周二',
  value: 400
 }, {
  day: '周三',
  value: 350
 }, {
  day: '周四',
  value: 500
 }, {
  day: '周五',
  value: 490
 }, {
  day: '周六',
  value: 600
 }, {
  day: '周日',
  value: 900
 }];
  // 與上面的視圖層對應(yīng)
 var chart = new F2.Chart({
  id: 'mountNode',
  pixelRatio: window.devicePixelRatio
 });
  //配置數(shù)據(jù)源
 chart.source(data, {、
  //value和day都是根據(jù)模擬數(shù)據(jù)的屬性來配置的,所以這里的value和day是可以更改的,具體根據(jù)后臺數(shù)據(jù)屬性來
  value: {
   tickCount: 5,
   min: 0
  },
  day: {
   range: [0, 1]
  }
 });
  // 配置文本提示信息以及觸發(fā)的方法
 chart.tooltip({
  showCrosshairs: true,
  showItemMarker: false,
  onShow: function onShow(ev) {
   var items = ev.items;
   items[0].name = null;
   items[0].value = '$ ' + items[0].value;
  }
 });
  //配置對應(yīng)方式
 chart.axis('day', {
  label: function label(text, index, total) {
   var textCfg = {};
   if (index === 0) {
    textCfg.textAlign = 'left';
   } else if (index === total - 1) {
    textCfg.textAlign = 'right';
   }
   return textCfg;
  }
 });
  // 配置定位
 chart.line().position('day*value');
  //配置圖表樣式
 chart.point().position('day*value').style({
  stroke: '#fff',
  lineWidth: 1
 });
  //渲染
 chart.render();

配置完之后我們就可以看到效果了,效果圖如下:

最后我們來總結(jié)一下:

(1) 首先我們在工作中肯定會碰到各種各樣的問題或者說bug,一定要理性的分析和解決,不能鉆進誤區(qū)不出來,如果多次嘗試還是沒辦法解決,那很大的概率就是你自己進入了誤區(qū),這個時候就需要冷靜下來分析和思考,我遇到的就是典型的案例;

(2)在使用這種可視化圖表的時候有些部分功能是不可使用的,比如環(huán)形圖的點擊展示圖例,這是因為AntV F2是用jquey實現(xiàn)的,你的項目中沒有引入的話是會報錯(“$ is not defined”),如果確實需要使用引入jquery即可

(3)正是因為AntV F2是jquery開發(fā)的,需要操作DOM樹,所以有的時候會造成js已經(jīng)執(zhí)行了但是DOM元素還沒有渲染完成的情況,這個時候我們要想到換種思路比如setTimeout即可解決,考慮問題要多元化和全面,辦法總比困難多

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue3選項式api如何監(jiān)控數(shù)組變化

    vue3選項式api如何監(jiān)控數(shù)組變化

    這篇文章主要介紹了vue3選項式api如何監(jiān)控數(shù)組變化問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • vue使用highcharts自定義圖例點擊事件

    vue使用highcharts自定義圖例點擊事件

    這篇文章主要為大家詳細介紹了vue使用highcharts自定義圖例點擊事件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • vue中實現(xiàn)多頁面應(yīng)用方式

    vue中實現(xiàn)多頁面應(yīng)用方式

    這篇文章主要介紹了vue中實現(xiàn)多頁面應(yīng)用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Vue如何獲取數(shù)據(jù)列表展示

    Vue如何獲取數(shù)據(jù)列表展示

    這篇文章主要為大家詳細介紹了Vue如何獲取數(shù)據(jù)列表展示,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • Vue 子組件更新props中的屬性值問題

    Vue 子組件更新props中的屬性值問題

    這篇文章主要介紹了Vue 子組件更新props中的屬性值問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • 解決獲取數(shù)據(jù)后this.$refs.xxx.toggleRowSelection無效的問題

    解決獲取數(shù)據(jù)后this.$refs.xxx.toggleRowSelection無效的問題

    這篇文章主要介紹了解決獲取數(shù)據(jù)后this.$refs.xxx.toggleRowSelection無效的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Vue中計算屬性computed的示例解讀

    Vue中計算屬性computed的示例解讀

    計算屬性和普通屬性一樣是在模板中綁定計算屬性的,當(dāng)data中對應(yīng)數(shù)據(jù)發(fā)生改變時,計算屬性的值也會發(fā)生改變。下面這篇文章主要給大家介紹了關(guān)于Vue中計算屬性computed的相關(guān)資料,需要的朋友可以參考下。
    2017-07-07
  • Vue子組件調(diào)用父組件方法案例詳解

    Vue子組件調(diào)用父組件方法案例詳解

    這篇文章主要介紹了Vue子組件調(diào)用父組件方法案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • Vue路由跳轉(zhuǎn)的5種方式及擴展

    Vue路由跳轉(zhuǎn)的5種方式及擴展

    這篇文章主要給大家介紹了關(guān)于Vue路由跳轉(zhuǎn)的5種方式及擴展,在Vue中路由是一種用于導(dǎo)航和管理頁面之間跳轉(zhuǎn)的機制,Vue Router是Vue官方提供的路由管理器,需要的朋友可以參考下
    2023-11-11
  • ElementPlus表單rules校驗的方法步驟

    ElementPlus表單rules校驗的方法步驟

    相信大家經(jīng)常都會遇到要處理表單驗證的環(huán)節(jié),而我在最近的項目中也遇到需要做表單驗證的業(yè)務(wù),下面這篇文章主要給大家介紹了關(guān)于ElementPlus表單rules校驗的方法步驟,需要的朋友可以參考下
    2023-04-04

最新評論