在vue2中使用餅狀圖

1.引入vue2和echarts

<script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/echarts@5.4.0/dist/echarts.min.js"></script>

2.1 補充基本的body內容

		<div id="app"><input type="text" style="width: 100px;" placeholder="消費名稱" v-model.trim="name"><input type="text"style="width: 100px;" placeholder="消費價格" v-model.number="price"><button @click="add(name,price)" >添加賬單</button><br><table border="1px solid red" style="text-align: center;width: 300px;"><thead><tr><td>編號</td><td>消費名稱</td><td>消費價格</td><td>操作</td></tr></thead><tbody><tr v-for="(item,index) in list" v-on:key="item.id"><td>{{index+1}}</td><td>{{item.name}}</td><td>{{item.price}}</td><td> <p @click="del(item.id)">刪除</p></td></tr></tbody></table><!-- 給餅圖的空間 --><div style="width: 500px;height: 300px;border:2px solid red;" class="main"></div></div>

2.2補充基本的script內容

		<script>const l =[{id:1,name:'小黑',price:10},]const app =new Vue({el:"#app",data:{name:'',price:'',list: l,},methods:{},watch:{},mounted(){}})</script>

? ?到現在展示的效果如下

3.在methods中添加新增和刪除的功能

					add(a,b){this.list.unshift({id:+new Date(),name:a,price:b})},del(a){ this.list=	this.list.filter(b=>b.id!==a) }, 

這樣我們的添加和刪除的功能就可以實現了

4.將修改后的內存持久化存儲

? 因為我們要對多個目標進行監聽,所以需要使用watch的完整寫法

				watch:{list:{ deep:true,//深度監視  handler(newValue){  localStorage.setItem("list",JSON.stringify(newValue)) }  }  }  ,

?存儲后前面的獲取也需要修改,從本地獲取并轉成json格式

JSON.parse(localStorage.getItem("list"))

? 這樣我們修改的后的數據就不會因為刷新瀏覽器而不存在了

5.使用餅狀圖

? ?在鉤子函數mounted渲染完成后添加echarts

this.myChat=	echarts.init(document.querySelector('.main'))this.myChat.setOption({ title: { text: '小黑記事本', subtext: 'Fake Data',  // 小標題 left: 'center' ,}, tooltip: { trigger: 'item' //提示框}, legend: { //圖例orient: 'vertical', //垂直left: 'left' }, series: [ { name: '消費賬單', type: 'pie', radius: '60%', data:  this.list.map(item=>({value:item.price,name:item.name})), emphasis: { itemStyle: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0, 0, 0, 0.5)' } } } ] })

這樣我們就可以清晰的看到各項數據的占比,但是這是我們在渲染完成后才會刷新,所以需要我們重新定義一個方法在每次添加和刪除之后進行調用來實時更新餅狀圖

5.1更新餅狀圖的方法

					a(){ this.myChat.setOption({series: [ {  data:  this.list.map(item=>({value:item.price,name:item.name})), } ]})}

?

?

?完整代碼如下

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title><script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script><!-- 引入vue2 --> <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script><!-- 引入axios --> <script src="https://cdn.jsdelivr.net/npm/echarts@5.4.0/dist/echarts.min.js"></script><!-- 引入echarts --> </head><body><div id="app"><input type="text" style="width: 100px;" placeholder="消費名稱" v-model.trim="name"><input type="text"style="width: 100px;" placeholder="消費價格" v-model.number="price"><button @click="add(name,price)" >添加賬單</button><br><table border="1px solid red" style="text-align: center;width: 300px;"><thead><tr><td>編號</td><td>消費名稱</td><td>消費價格</td><td>操作</td></tr></thead><tbody><tr v-for="(item,index) in list" v-on:key="item.id"><td>{{index+1}}</td><td>{{item.name}}</td><td>{{item.price}}</td><td> <p @click="del(item.id)">刪除</p></td></tr></tbody></table><!-- 給餅圖的空間 --><div style="width: 500px;height: 300px;border:2px solid red;" class="main"></div></div><script>const msg =  [{id:1,name:"手表",price:299.00},{id:2,name:"大衣",price:599.00},{id:3,name:"球鞋",price:299.00},{id:4,name:"鴨舌帽",price:99.00}]var list1 =  JSON.parse(localStorage.getItem("list"))const app =new Vue({el:"#app",data:{name:"",price:"",list:list1||msg},methods:{add(a,b){console.log(a)if(a==null || a==""){alter("請您添加消費名稱")} this.list.unshift({id:+new Date(),name:a,price:b})this.a()},del(a){ this.list=	this.list.filter(b=>b.id!==a) this.a()}, a(){ this.myChat.setOption({series: [ {  data:  this.list.map(item=>({value:item.price,name:item.name})), } ]})}},watch:{list:{ deep:true,//深度監視  handler(newValue){  localStorage.setItem("list",JSON.stringify(newValue)) }  }  }  , mounted(){//渲染后this.myChat=	echarts.init(document.querySelector('.main'))this.myChat.setOption({ title: { text: '小黑記事本', subtext: 'Fake Data',  // 小標題 left: 'center' ,}, tooltip: { trigger: 'item' //提示框}, legend: { //圖例orient: 'vertical', //垂直left: 'left' }, series: [ { name: '消費賬單', type: 'pie', radius: '60%', data:  this.list.map(item=>({value:item.price,name:item.name})), emphasis: { itemStyle: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0, 0, 0, 0.5)' } } } ] })}, })</script></body>
</html>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/712390.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/712390.shtml
英文地址,請注明出處:http://en.pswp.cn/news/712390.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

存儲過程基本了解

文章目錄 介紹存儲過程示例1. 目的2. 輸入參數3. 輸出參數4. 執行邏輯5. 返回值6. 示例用法7. 注意事項 存儲過程的關鍵字有哪些簡單實操 介紹 存儲過程是一組預編譯的SQL語句&#xff0c;以及流程控制語句&#xff0c;封裝在數據庫服務器中并可以被重復調用。它們可以接收參數…

5G 網絡建設【華為OD機試-JAVAPythonC++JS】

題目描述 現需要在某城市進行5G網絡建設&#xff0c;已經選取N個地點設置5G基站&#xff0c;編號固定為1到N&#xff0c;接下來需要各個基站之間使用光纖進行連接以確保基站能互聯互通&#xff0c;不同基站之間架設光纖的成本各不相同&#xff0c;且有些節點之間已經存在光纖相…

CentOS7安裝MySQL5.7

查看并卸載系統自帶的 Mariadb rpm -qa|grep mariadb rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64 檢查系統是否安裝過MySQL rpm -qa | grep mysql 檢查有無MySQL用戶組 cat /etc/group | grep mysql cat /etc/passwd | grep mysql 創建MySQL用戶組和用戶 groupadd m…

特斯拉一面算法原題

來自太空的 X 帖子 埃隆馬斯克&#xff08;Elon Musk&#xff09;旗下太空探索技術公司 SpaceX 于 2 月 26 號&#xff0c;從太空往社交平臺 X&#xff08;前身為推特&#xff0c;已被馬斯克全資收購并改名&#xff09;發布帖子。 這是 SpaceX 官號首次通過星鏈來發送 X 帖子&a…

SpringBoot+Vue實戰:打造企業級項目管理神器

??計算機編程指導師 ??個人介紹&#xff1a;自己非常喜歡研究技術問題&#xff01;專業做Java、Python、微信小程序、安卓、大數據、爬蟲、Golang、大屏等實戰項目。 ??實戰項目&#xff1a;有源碼或者技術上的問題歡迎在評論區一起討論交流&#xff01; ?? Java實戰 |…

【YOLO】INT8量化C++版

三、INT8量化 C++ 3.1下載coco128數據集 cd /mnt/workspace/yolov5/data/scripts sh get_coco128.sh3.2 模型準備 #onnx轉simple_onnx pip install onnx-simplifier python -m onnxsim yolov5s.onnx yolov5s-simple.onnx3.3 下載量化代碼庫 git clone https://github.com/W…

水豚鼠標助手 強大的鼠標美化工具

水豚鼠標助手 水豚鼠標助手是一款 鼠標換膚、屏幕畫筆、放大鏡、聚光燈、屏幕放大、倒計時功能的強大屏幕演示工具。 軟件助手獲取 水豚鼠標助手1.0.0 安裝教程 第一步&#xff1a;下載后&#xff0c;雙擊軟件安裝包 第二步&#xff1a;Windows可能會出現提示彈窗&#xff…

【已親測有效】如何徹底刪除nodejs,避免影響安裝新版本

第一步開始菜單搜索uninstall node.js&#xff0c;點擊之后等待刪除&#xff08;刪除node_modules文件夾以及以下這些文件&#xff09; 第二步手動刪除nodejs下載位置的其他文件夾。&#xff08;就是另外自己新建的兩個文件夾node_cache和node_global&#xff09; 到這里其實應…

uniapp實現多行文本溢出超過指定行數 展開 收起

一、組件封裝 <template><view class"multiline"><view class"info"><view :class"{hide:!iSinfo}" :style"!iSinfo?computedStyle:"><view :style"{ color: textColor,fontWeight:fontWeight,font…

網絡安全課程VIP介紹(比同行便宜)

免責聲明 本文發布的工具和腳本&#xff0c;僅用作測試和學習研究&#xff0c;禁止用于商業用途&#xff0c;不能保證其合法性&#xff0c;準確性&#xff0c;完整性和有效性&#xff0c;請根據情況自行判斷。如果任何單位或個人認為該項目的腳本可能涉嫌侵犯其權利&#xff0c…

Javaweb day7

前后端分類開發 Yapi 環境配置 vue項目簡介 項目啟動 更改端口號 vue項目開發流程

【c++設計模式05】創建型3:抽象工廠模式(Abstact Factory Pattern)

【c設計模式05】創建型3&#xff1a;抽象工廠模式&#xff08;Abstact Factory Pattern&#xff09; 一、工廠模式二、抽象工廠模式三、UML類圖四、demo五、總結 原創作者&#xff1a;鄭同學的筆記 原創地址&#xff1a;https://zhengjunxue.blog.csdn.net/article/details/132…

Spring 源碼解析

文章目錄 前言相關Spring的定義接口整體代碼StartupStep contextRefresh this.applicationStartup.start("spring.context.refresh")prepareRefresh()obtainFreshBeanFactory()registerBeanPostProcessors(beanFactory)SpringAOP原碼流程EnableAspectJAutoProxyAnno…

Linux調試器-gdb使用與馮諾依曼體系結構

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 前言 Linux調試器-gdb使用 1. 背景 2. 開始使用 馮諾依曼體系結構 總結 前言 世上有兩種耀眼的光芒&#xff0c;一種是正在升起的太陽&#xff0c;一種是正在努力學…

計算機網絡-網絡互連和互聯網(五)

1.路由器技術NAT&#xff1a; 網絡地址翻譯&#xff0c;解決IP短缺&#xff0c;路由器內部和外部地址進行轉換。靜態地址轉換&#xff1a;靜態NAT&#xff08;一對一&#xff09; 靜態NAT&#xff0c;內外一對一轉換&#xff0c;用于web服務器&#xff0c;ftp服務器等固定IP的…

(定時器/計數器)中斷系統(詳解與使用)

講解 簡介 定時器/計數器 定時器實際上也是計數器,只是計數的是固定周期的脈沖 定時和計數只是觸發來源不同(時鐘信號和外部脈沖)其他方面是一樣的。 定時器在單片機內部就像一個小鬧鐘一樣,根據時鐘的輸出信號,每隔“一秒”,計數單元的數值就增加一,當計數單元數值…

C++:String類的使用

創作不易&#xff0c;感謝三連&#xff01;&#xff01; 在C語言中&#xff0c;我們想要存儲字符串的話必須要用字符數組 char str[]"hello world"這其實是將在常量區的常量字符串拷貝到數組中&#xff0c;我們會在數組的結尾多開一個空間存儲\0&#xff0c;這樣我…

前端構建之CERT_HAS_EXPIRED和certificate has expired解決方案

問題 2024年 1 月 22 日&#xff0c;淘寶原鏡像域名&#xff08;registry.npm.taobao.org&#xff09;的 HTTPS 證書正式到期。如果想要繼續使用&#xff0c;需要將 npm 源切換到新的源&#xff08;registry.npmmirror.com&#xff09;&#xff0c;否則會報錯。 報錯信息為&a…

Consul服務注冊與發現 Consul配置步驟

Consul服務注冊與發現 Consul配置步驟 consul下載地址 Install | Consul | HashiCorp Developer 啟動需要在 下載好的文件夾里 用cmd 運行consul agent -dev啟動consul Consul配置 配置pom <!--SpringCloud consul config--> <dependency><groupId>org…

【leetcode】回文子串 動態規劃

/*** param {string} s* return {number}*/ var countSubstrings function(s) {let dpnew Array(s.length).fill().map(()>new Array(s.length).fill(false));let num0;for(let i0;i<s.length;i){for(let j0;j<i;j){//在首尾相等時&#xff0c;如果長度時1或者2&…