当前位置: 首页 > news >正文

酷站海洛牡丹江网络推广公司

酷站海洛,牡丹江网络推广公司,企查查企业信息,企业vi设计需求如何在一个传统的html中#xff0c;引入vueJs并使用vue复制组件#xff1f; 1.1 引言1.2 背景1.3 解决方案1.3.1 解决方案一#xff1a;直接使用clipboard(不推荐仅供参考学习)1.3.2 解决方案二#xff1a;封装指令js库后使用 (推荐) 1.1 引言 这篇博文主要分享如何在一个… 如何在一个传统的html中引入vueJs并使用vue复制组件 1.1 引言1.2 背景1.3 解决方案1.3.1 解决方案一直接使用clipboard(不推荐仅供参考学习)1.3.2 解决方案二封装指令js库后使用 (推荐) 1.1 引言 这篇博文主要分享如何在一个传统的html中通过通过引入js方式使用vue功能和vue复制组件。 1.2 背景 项目是一个传统的前后端在一起的项目前端框架使用的一些前端组件库是通过在html中引入bootstrap,vue 等JS实现。 无法使用包管理器不支持import和export等语法现在要求在这样的背景下实现一键复制功能。 1.3 解决方案 我们知道在支持包管理器安装的vue项目中可以这样使用有两种用法。 但是很显然第二种v-clipboard:copyinputData 使用方式更加优雅。 templatediv classapp-containerel-tabs v-modelactiveNameel-tab-pane labeluse clipboard directly namedirectlyel-input v-modelinputData placeholderPlease input stylewidth:400px;max-width:100%; /el-button typeprimary iconel-icon-document clickhandleCopy(inputData,$event)copy/el-button/el-tab-paneel-tab-pane labeluse clipboard by v-directive namev-directiveel-input v-modelinputData placeholderPlease input stylewidth:400px;max-width:100%; /el-button v-clipboard:copyinputData v-clipboard:successclipboardSuccess typeprimary iconel-icon-documentcopy/el-button/el-tab-pane/el-tabs/div /templatescript import clip from /utils/clipboard // use clipboard directly import clipboard from /directive/clipboard // use clipboard by v-directiveexport default {name: ClipboardDemo,directives: {clipboard},data() {return {activeName: directly,inputData: https://github.com/PanJiaChen/vue-element-admin}},methods: {handleCopy(text, event) {clip(text, event)},clipboardSuccess() {this.$message({message: Copy successfully,type: success,duration: 1500})}} } /script详细示例参见https://github.com/PanJiaChen/vue-element-admin/blob/master/src/views/clipboard/index.vue 那么在传统的html中引入js方式使用又该如何改造呢 1.3.1 解决方案一直接使用clipboard(不推荐仅供参考学习) 封装简化下 clipboard_plugin_v1.js // 定义自定义指令对象 const clipboardDirective {// 在 bind 钩子中初始化 Clipboard.js 实例bind(el, binding) {const clipboard new ClipboardJS(el, {text: () binding.value,});clipboard.on(success, (e) {e.clearSelection();// 触发成功复制事件您可以在这里添加自定义处理逻辑el.dispatchEvent(new Event(clipboard-success));});clipboard.on(error, (e) {// 触发复制失败事件您可以在这里添加自定义处理逻辑el.dispatchEvent(new Event(clipboard-error));});// 将 Clipboard.js 实例绑定到元素上以便后续销毁el._clipboard clipboard;},// 在 unbind 钩子中销毁 Clipboard.js 实例unbind(el) {const clipboard el._clipboard;if (clipboard) {clipboard.destroy();delete el._clipboard;}}, }; // 注册自定义指令 Vue.directive(clipboard, clipboardDirective);html中使用示例 !DOCTYPE html html langen headmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0title使用自定义 Clipboard 指令/title /head bodydiv idappel-buttonclickcopyText(textToCopy)idclipboardBtntypeprimaryiconel-icon-document复制/el-button/div!-- 引入 Vue.js --script srchttps://cdn.jsdelivr.net/npm/vue2.6.14/script!-- 引入 Clipboard.js 这里如果服务器不支持访问外网请下载下来引入本地文件效果等价于执行 npm install clipboard --save --script srchttps://cdn.jsdelivr.net/npm/clipboard2.0.8/dist/clipboard.min.js/script!-- 引入自定义 clipboard_plugin_v1.js 效果等价于 import clipboard from /directive/clipboard --script src../assets/js/clipboard/clipboard_plugin_v1.js/scriptscript// 创建 Vue 实例new Vue({el: #app,directives: { clipboardDirective },data: {textToCopy: 这是要复制的文本,clipboardInstance: null,},methods: {copyText(textToCopy) {let vm this;if (vm.clipboardInstance) {vm.clipboardInstance.destroy(); // 销毁旧的 clipboard 实例}// 在此处将要复制的文本设置为传递的参数vm.clipboardInstance new ClipboardJS(#clipboardBtn, {text: () textToCopy});vm.clipboardInstance.on(success, (e) {e.clearSelection();vm.$message({message: 文本已成功复制到剪贴板!,type: success,duration: 1500})});vm.clipboardInstance.on(error, (e) {e.clearSelection();vm.$message({message: 复制操作失败请手动复制文本!,type: error,duration: 1500})});// 在调用 copyToClipboard 方法时自动启动剪贴板复制操作因此用户不需要手动单击按钮来复制文本。//vm.clipboardInstance.onClick({ currentTarget: document.querySelector(#clipboardBtn) });},},});/script /body /html1.3.2 解决方案二封装指令js库后使用 (推荐) 为了简化可以使用类似 v-clipboard:copy语法这里我们除了引入剪切板js库之外还需要封装下指令到一个js中。 因为只有封装后我们才能使用directives: { clipboardDirectiveV2 }, 这种语法来简化使用。 clipboard_plugin_v2.js // clipboard_plugin_v2.js// Inspired by https://github.com/Inndy/vue-clipboard2 const clipboardDirectiveV2 {bind(el, binding) {if (binding.arg success) {el._v_clipboard_success binding.value} else if (binding.arg error) {el._v_clipboard_error binding.value} else {const clipboard new ClipboardJS(el, {text: () binding.value,action() { return binding.arg cut ? cut : copy }});clipboard.on(success, e {const callback el._v_clipboard_successcallback callback(e) // eslint-disable-line})clipboard.on(error, e {const callback el._v_clipboard_errorcallback callback(e) // eslint-disable-line})el._v_clipboard clipboard}},update(el, binding) {if (binding.arg success) {el._v_clipboard_success binding.value} else if (binding.arg error) {el._v_clipboard_error binding.value} else {el._v_clipboard.text function() { return binding.value }el._v_clipboard.action function() { return binding.arg cut ? cut : copy }}},unbind(el, binding) {if (binding.arg success) {delete el._v_clipboard_success} else if (binding.arg error) {delete el._v_clipboard_error} else {el._v_clipboard.destroy()delete el._v_clipboard}} } // 注册自定义指令 Vue.directive(clipboard, clipboardDirectiveV2);然后在html中调用 !DOCTYPE html html langen headmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0title使用自定义 Clipboard 指令/title /head bodydiv idapp!-- 使用自定义 Clipboard 指令复制文本 --button v-clipboard:copytextToCopy clipboard-successhandleCopySuccess clipboard-errorhandleCopyError复制/button/div!-- 引入 Vue.js --script srchttps://cdn.jsdelivr.net/npm/vue2.6.14/script!-- 引入 Clipboard.js 这里如果服务器不支持访问外网请下载下来引入本地文件效果等价于执行 npm install clipboard --save --script srchttps://cdn.jsdelivr.net/npm/clipboard2.0.8/dist/clipboard.min.js/script!-- 引入自定义 clipboard_plugin_v2.js 效果等价于 import clipboard from /directive/clipboard --script src../assets/js/clipboard/clipboard_plugin_v2.js/scriptscript// 创建 Vue 实例new Vue({el: #app,directives: { clipboardDirectiveV2 },data: {textToCopy: 这是要复制的文本,},methods: {handleCopySuccess() {// 复制成功时的处理逻辑alert(文本已成功复制到剪贴板!);},handleCopyError() {// 复制失败时的处理逻辑alert(复制操作失败请手动复制文本!);},},});/script /body /html
http://wiki.neutronadmin.com/news/267034/

相关文章:

  • 物联网平台网站开发考试网站模版
  • 网站数据库怎么建自己在线制作logo免费图片
  • 公司的网站建设费会计分录wordpress 图片浏览器
  • 网站建设下什么费用织梦做的网站怎么传到网上
  • 怎样用jsp做网站登录外贸网站模板免费下载
  • 游戏网站app简单制作网页的软件
  • 扬中网站推广价格高端室内设计工作室
  • 三站合一网站建设方案微信自媒体网站建设
  • 南宁网站建设哪个好深圳网站建设公司企业
  • 陕西做网站公司哪家好百度做网站要多长时间
  • 网站建设捌金手指下拉四如何用flash做网站
  • dede关闭网站多平台网站建设
  • 无锡市建设银行总行网站企业做网站有用吗天涯
  • 六安网站制作找哪家多媒体展厅
  • 福建省亿力电力建设有限公司网站中国服务器排名前十名
  • 深圳建站公司兴田德润电话多少北京品牌网站设计
  • 网上接网站做网站建设 南昌招标
  • 天津做网站的网络公司网站策划编辑是干嘛的
  • 福州 网站设计wordpress中文是什么?
  • 网站底部设计wordpress支持论坛
  • 做视频网站空间要多大直播带货平台
  • 三合一网站搭建价格佛山微商网站建设
  • asp.net 网站备份中国住建部和城乡建设部官网
  • 怎么做网站空间wordpress网站部署
  • 电商网站平台建设视频淘宝友情链接怎么设置
  • 优秀 网站设计 蓝色滕州网站建设网站行吗
  • 网站建设_广州网站建设专业公司wordpress 侧边栏 修改字体大小
  • 哈尔滨网站建设wordpress可以问答
  • 做网站没有固定电话电商网站开发环境
  • 养老院网站建设的好处万州集团网站建设