在html中如何創建vue自定義組件(以自定義文件上傳組件為例,vue2+elementUI)

1、先上代碼:vueUpload.js

var dom = `<div class="upload-file"><el-upload :action="uploadFileUrl" :before-upload="handleBeforeUpload" :file-list="fileList" :limit="limit":on-error="handleUploadError" :on-exceed="handleExceed" :on-success="handleUploadSuccess":show-file-list="false" :headers="headers" class="upload-file-uploader" ref="upload"><!-- 上傳按鈕 --><el-button size="mini" type="primary">選取文件</el-button><!-- 上傳提示 --><div class="el-upload__tip" slot="tip" v-if="showTip">請上傳<template v-if="fileSize"> 大小不超過 <b style="color: #f56c6c">{{ fileSize }}MB</b> </template><template v-if="fileType"> 格式為 <b style="color: #f56c6c">{{ fileType.join("/") }}</b> </template>的文件</div></el-upload><!-- 文件列表 --><div><div :key="file.uid" class="el-upload-list__item ele-upload-list__item-content" v-for="(file, index) in list"v-if="file.url != null" style="display:flex;justify-content:space-between;align-item:center;max-width:300px;over-flow:hidden;text-overflow:ellipsis;white-space:nowrap;border: 1px solid #ddd;padding: 0 10px;cursor: pointer;"><el-link :href="file.url" :underline="false" target="_blank"><span class="el-icon-document"> {{ file.name }} </span></el-link><div class="ele-upload-list__item-content-action"><el-link :underline="false" @click="handleDelete(index)" type="danger">刪除</el-link></div></div></div></div>`var demoComponent = Vue.extend({template:dom,props: {// 值value: [String, Object, Array],// 大小限制(MB)fileSize: {type: Number,default: 5,},// 文件類型, 例如['png', 'jpg', 'jpeg']fileType: {type: Array,default: () => ["doc", "xls", "ppt", "txt", "pdf"],},// 是否顯示提示isShowTip: {type: Boolean,default: true},limit: {type: Number,default: 9}},data:function(){return {uploadFileUrl: '/file/rest/common/upload', // 上傳的圖片服務器地址headers: {Authorization: 'Bearer 123'},fileList: [],}},created() {this.fileList = this.list;},mounted() {console.log(this);},computed: {// 是否顯示提示showTip() {return this.isShowTip && (this.fileType || this.fileSize);},// 列表list() {let temp = 1;if (this.value) {const list = this.value;return list.map((item) => {item.name = item.fileNameitem.url = item.fileUrlitem.uid = item.uid || new Date().getTime() + temp++;return item;});} else {this.fileList = [];return [];}},},methods:{// 上傳前校檢格式和大小handleBeforeUpload(file) {// 校檢文件類型if (this.fileType) {let fileExtension = "";if (file.name.lastIndexOf(".") > -1) {fileExtension = file.name.slice(file.name.lastIndexOf(".") + 1);}const isTypeOk = this.fileType.some((type) => {if (file.type.indexOf(type) > -1) return true;if (fileExtension && fileExtension.indexOf(type) > -1) return true;return false;});if (!isTypeOk) {this.$message.error(`文件格式不正確, 請上傳${this.fileType.join("/")}格式文件!`);return false;}}// 校檢文件大小if (this.fileSize) {const isLt = file.size / 1024 / 1024 < this.fileSize;if (!isLt) {this.$message.error(`上傳文件大小不能超過 ${this.fileSize} MB!`);return false;}}return true;},// 文件個數超出handleExceed(e) {if(this.limit == 1) {this.$message.error(`只能上傳一個文件,請先刪除原文件后重新上傳!`);} else {this.$message.error(`上傳文件數量不能超過 ${props.limit} 個!`);}},// 上傳失敗handleUploadError(err) {this.$message.error("上傳失敗, 請重試");},// 上傳成功回調handleUploadSuccess(res, file) {this.fileList.push({name:res.data.name, url:res.data.url, fileName:res.data.name, fileUrl:res.data.url})this.$message.success("上傳成功");this.$emit("input", this.fileList);},// 刪除文件handleDelete(index) {this.fileList.splice(index, 1);this.$emit("input", this.fileList);},// 獲取文件名稱getFileName(name) {if (name.lastIndexOf("/") > -1) {return name.slice(name.lastIndexOf("/") + 1).toLowerCase();} else {return "";}}},})Vue.component('vue-upload',demoComponent)

2、在html中使用,在html中引入上面的vueUpload.js自定義組件文件

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>測試</title><script src="https://unpkg.com/vue@2/dist/vue.js"></script><!-- 引入樣式 --><link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css"><!-- 引入組件庫 --><script src="https://unpkg.com/element-ui/lib/index.js"></script><!-- 引入自定義上傳組件 --><script src="./vueUpload.js"></script>
</head>
<body><div id="app"><vue-upload v-model="fileList" :limit="1" :file-type="['doc','docx','pdf']" :file-size="50"></vue-upload>        </div><script>var app = new Vue({el: '#app',data () {return {fileList:[{fileName:'測試.pdf',fileUrl:'http://www.baidu.com/img/bd_logo1.png'}],}},mounted () {},methods: {}})</script>
</body>
</html>

3、展示效果

總結:在html中使用vue創建自定義組件和在vue中創建自定義組件基本一樣,只不過寫在js里最后記得把自定義組件通過Vue.component('vue-upload',demoComponent),掛載到vue上,還有在html中標簽還有屬性名都不可以用駝峰命名,切記!!!!!,駝峰命名的單詞改用 ‘-’ 的寫法

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

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

相關文章

計算機基礎:二進制基礎14,二進制加法

專欄導航 本節文章分別屬于《Win32 學習筆記》和《MFC 學習筆記》兩個專欄&#xff0c;故劃分為兩個專欄導航。讀者可以自行選擇前往哪個專欄。 &#xff08;一&#xff09;WIn32 專欄導航 上一篇&#xff1a;計算機基礎&#xff1a;二進制基礎13&#xff0c;十六進制與二進…

可視化圖解算法: 判斷是不是二叉搜索樹(驗證二叉搜索樹)

1. 題目 描述 給定一個二叉樹根節點&#xff0c;請你判斷這棵樹是不是二叉搜索樹。 二叉搜索樹滿足每個節點的左子樹上的所有節點的值均嚴格小于當前節點的值&#xff1b;并且右子樹上的所有節點的值均嚴格大于當前節點的值。 數據范圍&#xff1a;節點數量滿足 1≤n≤10^4…

Markdown轉WPS office工具pandoc實踐筆記

隨著DeepSeek、文心一言、訊飛星火等AI工具快速發展&#xff0c;其輸出網頁內容拷貝到WPS Office過程中&#xff0c;文檔編排規整的格式很難快速復制。 注&#xff1a;WPS Office不支持Markdown格式&#xff0c;無法識別式樣。 在這里推薦個免費開源工具Pandoc&#xff0c;實現…

python的turtle庫實現四葉草

實現代碼&#xff1a; import turtle turtle.pencolor(‘green’) turtle.fillcolor(‘green’) turtle.begin_fill() turtle.circle(100,90) turtle.left(90) turtle.circle(100,90) turtle.right(180) turtle.circle(100, 90) turtle.left(90) turtle.circle(100,90) tu…

北重數控滑臺加工廠家:汽車零部件試驗鐵地板-安全性能的測試方法

汽車零部件的安全性能測試是非常重要的&#xff0c;其中鐵地板測試是其中的一種常見測試方法之一。鐵地板測試主要用于評估汽車零部件在發生碰撞或事故時的安全性能&#xff0c;以確保零部件在各種情況下都能提供有效的保護和安全性能。 鐵地板測試通常包括以下步驟和方法&…

Linux0.11系統調用:預備知識

系統調用 預備知識 目標&#xff1a;了解系統調用的流程&#xff0c;在Linux 0.11上添加兩個系統調用&#xff0c;并編寫兩個簡單的應用程序測試它們。 對應章節&#xff1a;同濟大學趙炯博士的《Linux內核0.11完全注釋&#xff08;修正版V3.0&#xff09;》的第5.5節 下面就針…

如何防止 ES 被 Linux OOM Killer 殺掉

當 Linux 系統內存不足時&#xff0c;內核會找出一個進程 kill 掉它釋放內存&#xff0c;旨在保障整個系統不至于崩潰。如果 ES 按照最佳實踐去實施部署&#xff0c;會保留一半的內存&#xff0c;不至于發生此類事情。但事情總有例外&#xff0c;有的朋友可能 ES 和其他的程序部…

swagger2升級至openapi3的利器--swagger2openapi

背景&#xff1a; 因為項目需要升級JDK&#xff0c;涉及到swagger2升級至openapi3的情況。由于swagger 2和openapi 3的語法差距太大&#xff0c;需要對yaml進行升級。無奈單個yaml文件的內容太大&#xff0c;高至4萬多行&#xff0c;手動進行語法的轉換肯定是不可能了&#xff…

在yolo中Ultralytics是什么意思呢?超越分析的智能

在YOLO&#xff08;You Only Look Once&#xff09;目標檢測框架中&#xff0c;Ultralytics 是一家專注于計算機視覺和機器學習技術的公司&#xff0c;同時也是YOLO系列模型&#xff08;如YOLOv5、YOLOv8等&#xff09;的官方開發和維護團隊。以下是關鍵點解析&#xff1a; 1. …

【阿里云大模型高級工程師ACP習題集】2.7 通過微調增強模型能力 (上篇)(?????? 重點章節!!!)

習題集: 【單選題】在大模型微調中,與提示工程和RAG相比,微調的獨特優勢在于( ) A. 無需外部工具即可提升模型表現 B. 能讓模型學習特定領域知識,提升底層能力 C. 可以更高效地檢索知識 D. 能直接提升模型的知識邊界,無需訓練 【多選題】以下關于機器學習和傳統編程的說…

CuML + Cudf (RAPIDS) 加速python數據分析腳本

如果有人在用Nvidia RAPIDS加速pandas和sklearn等庫&#xff0c;請看我這個小示例&#xff0c;可以節省你大量時間。 1. 創建環境 請使用uv&#xff0c;而非conda/mamba。 # install uv if not yetcurl -LsSf https://astral.sh/uv/install.sh | shuv init data_gpucd data_g…

2-SAT之完美塔防

小N最近喜歡玩一款塔防游戲。 題目描述 這款游戲的棋盤是一個 nm 的網格&#xff0c;每個格子上會有以下類型物件&#xff1a; A 型炮臺&#xff1a;會向上下兩個方向同時發射激光&#xff0c;符號為 |;B 型炮臺&#xff1a;會向左右兩個方向同時發射激光&#xff0c;符號為…

【android bluetooth 案例分析 03】【PTS 測試 】【PBAP/PCE/SSM/BV-02-C】

1. 測試介紹 PBAP/PCE/SSM/BV-02-C [PCE Closes a PBAP Session] 1. Test Purpose Verify that the PCE can terminate a PBAP session. 2. Initial Condition IUT: The IUT is engaged in a PBAP session with the Lower Tester.Lower Tester: The Lower Tester is engag…

ArcGIS:開啟洪水災害普查、評估與制圖新征程

技術點目錄 一、洪水普查技術規范解讀二、ArcGIS介紹及數據管理三、空間數據的轉換與處理四、洪水淹沒專題地圖制作五、矢量數據的采集與處理六、柵格數據的下載與處理七、ArcGIS水文分析八、ArcGIS洪水分析九、ArcGIS淹沒分析了解更多 ———————————————————…

【系統參數合法性校驗】spring-boot-starter-validation

JSR303校驗 統一校驗的需求 前端請求后端接口傳輸參數&#xff0c;是在controller中校驗還是在Service中校驗&#xff1f; 答案是都需要校驗&#xff0c;只是分工不同。 Contoller中校驗請求參數的合法性&#xff0c;包括&#xff1a;必填項校驗&#xff0c;數據格式校驗&…

[零基礎]內網ubuntu映射到云服務器上,http訪問(frp內網穿透)

阿里云服務器&#xff0c;高校教師可以半價&#xff0c; frp下載地址&#xff1a;https://github.com/fatedier/frp/releases&#xff0c;選amd64&#xff0c; 云服務器開放端口 選擇網絡與安全–>安全組->管理規則 配置開放端口&#xff0c;7000為支持frp開放的端口&…

第十六屆藍橋杯 2025 C/C++組 破解信息

目錄 題目&#xff1a; 題目描述&#xff1a; 題目鏈接&#xff1a; 思路&#xff1a; 思路詳解&#xff1a; 代碼&#xff1a; 代碼詳解&#xff1a; 題目&#xff1a; 題目描述&#xff1a; 題目鏈接&#xff1a; P12344 [藍橋杯 2025 省 B/Python B 第二場] 破解信息…

OpenAI Embedding 和密集檢索(如 BERT/DPR)進行語義相似度搜索有什么區別和聯系

OpenAI Embedding 和密集檢索&#xff08;如 BERT/DPR&#xff09;其實是“同一種思想的不同實現”&#xff0c;它們都屬于Dense Retrieval&#xff08;密集向量檢索&#xff09;&#xff0c;只不過使用的模型、部署方式和調用方式不同。 &#x1f9e0; 首先搞清楚&#xff1a;…

Linux電源管理(3)_關機和重啟的過程

原文&#xff1a;Linux電源管理&#xff08;3&#xff09;_Generic PM之重新啟動過程 1.前言 在使用計算機的過程中&#xff0c;關機和重啟是最先學會的兩個操作。同樣&#xff0c;這兩個操作在Linux中也存在&#xff0c;可以關機和重啟。這就是這里要描述的對象。在Linux Ke…

C# 繼承詳解

繼承是面向對象程序設計&#xff08;OOP&#xff09;中的核心概念之一&#xff0c;它極大地增強了代碼的重用性、擴展性和維護性。本篇文章將詳細講解C#中的繼承機制&#xff0c;包括基礎概念、語法特法、多重繼承&#xff08;通過接口實現&#xff09;、繼承的規則和實際應用示…