视频电商网站实战 - 视频上传:标签编辑框效果快速实现

vue3 TagInput 实现 这里我们可以利用父子组件之间的通讯,利用 v-model 来实现,父组件传值,子组件负责展示,同时在子组件里可以更改该值,那么这个时候就需要在更改后通知父组件进行对应的改变,就需要用到 defineProps 和 defineEmits,主要利用update:modelValue实现。其实是很简单的,我们可以利用 element-plus 组件库里的。这里我们可以将其抽离成一个公共的组件,那么现在有一个问题就是通讯问题。要实现类似于下面这种效果。 阅读详情

本节我们来完成tag框,输入关键字后回车即可出现标签增加和删除效果。

我们可以用一个开源组件:https://github.com/matiastucci/vue-input-tag

安装: cd到我们的项目根目录下执行

npm install vue-input-tag --save

安装完成,我们的node_modules目录中会多一个vue-input-tag目录。

然后应用到我们的项目中.

来到视频发布组件publish.vue

1.js部分

//引入组件
import InputTag from 'vue-input-tag';

此时会报错

Module parse failed:xxxxxxxxxxxxxxxxxxxxxxx
You may need an appropriate loader to handle this file type.

这是因为我们的vue-input-tag路径在node_modules 中,而我们的webpack配置文件webpack.config.js中排错了这个目录。需要修改如下:

//修改前
 {test:/\.vue$/,loader:'babel!vue',exclude:/node_modules/},
 //修改后
  {test:/\.vue$/,loader:'babel!vue'},

然后继续报错:

Module build failed: ReferenceError: Unknown plugin "transform-runtime" specified in xxxxxxxxxxxxxxxx

我们来到node_modules/vue-input-tag/.babelrc:

{
  "presets": ["es2015", "stage-2"],
  "plugins": ["transform-runtime"],
  "comments": false
}

解决方法:
先安装

npm install babel-plugin-transform-runtime --save
npm install --save-dev babel-preset-stage-2

然后修改我们项目的(根目录下的).babelrc:

{
    "presets":["es2015","stage-2"],
    "plugins": ["transform-runtime"]
}

(主要,修改了核心配置文件后,要重启服务:npm run dev)。

2.好了,继续完成我们的功能。
在引入了组件之后,需要加载进去

  components:{
      'input-tag':InputTag, //注册组件
  }

3.模板上使用组件

<el-form-item label="标签" prop="v_tags">
     <input-tag :tags="video.v_tags" placeholder="输入标签后回车"></input-tag>
</el-form-item>

:tags="video.v_tags" 中,我们在data() 的 video 中 添加了v_tags 数组,input-tag组件添加的标签会加入这个数组。

 data(){
     return {
         video:{
             v_title:'',
             v_class:2,
             v_pic:{name:'',url:'',id:0},
             v_tags:[],
         },
         isShowPic:false,
     }

这里写图片描述

发布视频组件全部代码如下:

<template>
    <div>

        <el-dialog title="图片预览" v-model="isShowPic" size="small">
            <span>
                <img :src="video.v_pic.url">
            </span>
            <span slot="footer" class="dialog-footer">
          </span>
        </el-dialog>

        <el-form :model="video"  label-width="100px" class="demo-ruleForm">
            <el-col :span="12">
                <el-form-item label="视频标题" prop="v_title">
                    <el-input v-model="video.v_title" placeholder="请输入视频标题"></el-input>
                </el-form-item>
                <el-form-item label="视频分类" prop="v_class">
                    <el-select v-model="video.v_class" placeholder="请选择">
                        <el-option
                            v-for="item in this.$store.getters.navForVideoClass"
                            :label="item.nav_text"
                            :value="item.nav_id"
                        >
                            {{item.nav_text}}
                        </el-option>
                    </el-select>
                </el-form-item>

                <el-form-item label="视频封面" prop="v_pic">
                    <el-upload
                            action="http://localhost/yiiserver/web/index.php/video/upload"
                            type="drag"
                            :thumbnail-mode="true"
                            :on-preview="handlePreview"
                            :on-remove="handleRemove"
                            :on-success="handleSuccess"
                            :multiple="false"
                            name="Uploader[file]"
                    >
                        <i class="el-icon-upload"></i>
                        <div class="el-dragger__text">将文件拖到此处,或<em>点击上传</em></div>
                        <div class="el-upload__tip" slot="tip">只能上传jpg/png文件,且不超过500kb</div>
                    </el-upload>
                </el-form-item>

                <el-form-item label="标签">
                   <input-tag :tags="video.v_tags"  placeholder="输入标签后回车"></input-tag>
                </el-form-item>
                <el-form-item label="测试按钮">
                    <el-button type="primary" @click="testBtn">测试按钮</el-button>
                </el-form-item>
            </el-col>

            <el-col :span="12"></el-col>

        </el-form>
    </div>
</template>

<script>
    //引入组件
    import InputTag from 'vue-input-tag';

    export default{
        data(){
            return {
                video:{
                    v_title:'',
                    v_class:2,
                    v_pic:{name:'',url:'',id:0},
                    v_tags:[],
                },
                isShowPic:false,
            }
        },

        methods: {
            handleRemove(file, fileList) {
                //移除图片
                console.log(file, fileList);
                this.video.v_pic.url = '';
                this.video.v_pic.name = '';
            },
            handlePreview(file) {
                //预览图片
                console.log(file);
                this.isShowPic = true;
            },
            handleSuccess(file){
                //响应成功
                console.log(file);

                if(file.status ==1){
                    //保存后端返回来的数据
                    this.video.v_pic.url = file.url;
                    this.video.v_pic.name = file.name;
                    this.video.v_pic.id = file.img_id;
                }else{
                    alert('上传失败,,请稍后再试');
                }
            },
            testBtn(){
                alert(this.video.v_tags);
            }
        },

        components:{
            'input-tag':InputTag, //注册组件
        }
    }
</script>
vue-input-tag:Vue.js 2.0输入标签组件 Vue输入标签 一个受启发的Vue.js 2.0输入标签组件 安装 NPM /纱线 npm install vue-input-tag --save yarn add vue-input-tag 然后,您需要导入并注册它: import InputTag from 'vue-input-tag' Vue . component ( 'input-tag' , InputTag ) CDN < script src =" https://unpkg.com/vue " > </ script > < script src =" https://unpkg.com/vue-input-ta 立即下载

相关推荐

tag-input:用于添加和显示标签的输入

标签输入(带有React) 呈现输入字段的react组件。 当按回车键或输入逗号时,该值将用于创建标签。 标签显示在输入的前面。 安装 安装为节点依赖项: npm install tag-input --save 快速开始 要在本地测试更改为node_modules / tag-input并运行: npm start & npm run watch 指令 npm run build -构建生产CSS和JS npm run watch编译css和js npm run watch:test对变更进行测试 npm start静态开发服务器 npm test -运行皮棉和测试 用法 版本2.x 版本1.3(已弃用) 版本2.x 删除了userInput和tags状态,以使其在用作子组件的情况下可重用。 为了使用此组件,需要一个父组件。 父组件管理userInput和标签状态。 它

vue 输入表单库,在开发项目时节省大量时间

文章目录1. Vue Select(制作表单)2. Vue Input Tag(向表单添加标签)3.Vue Dropdowns(Vue 下拉菜单)4. Vue Color(颜色选择添加到表单中)5. VueJS DatePicker(日期选择器)6. Vue Switches(切换开关)7. Vue Dropzone(拖放文件上传)8. Vue Circle Sliders(圆形滑块)9. Vue Phone Number(电话号码输入)特殊 react 1. Vue Select(制作表单) 官方地址:

estrusKing的博客 1014

YOLOv8傻瓜式教程

YOLOv8傻瓜式教程,附带详细参数配置。

Father_of_Python的博客 1万+

自定义在input生成tag标签样式,标签可删除。组件封装

自定义在input生成tag标签样式,标签可删除

Sunny_lxm的博客 1770

解决VM 与 Device/Credential Guard 不兼容。在禁用 Device/Credential Guard 后,可以运行 VM 的方法

在启用了Credential Guard或Device Guard的Windows 10主机上启动12.5版之前的VMware Workstation中的虚拟机时,将显示蓝色诊断屏幕(BSOD)。 会看到类似于以下内容的错误: VMware Workstation和Device / Credential Guard不兼容。禁用Device / Credential Guard后,可以运行VMwar...

Hern(宋兆恒) 39万+

双足肌肉骨骼机器人

Clone Alpha的技术突破标志着人类进入生物-机械融合的新纪元,但其影响远超技术范畴。从伦理框架重建(如拉马克进化算法中的知识传递机制)到经济模式革新(如UBI应对机器人失业潮),需全球协作制定前瞻性政策。若放任技术无序扩张,人类社会或将面临“能力断层”与“控制权丧失”的双重危机;反之,若以人类福祉为核心导向,仿生机器人亦可成为弥合残障歧视、提升整体文明层级的钥匙。当下选择,将决定人类究竟是技术的创造者,还是被重构的客体。

百态·数智思维 | 聚焦大数据、量化与未来AI 985

【2022-11-09】vue2实现简单的tag-input标签输入框

vue2实现tag-input

lookingForw_4585的博客 4116

LPDDR4x 深度解析(3) - SDRAM核心操作机制

本文深入解析LPDDR4x SDRAM的核心操作机制,包括基础架构、刷新操作、读写流程及低功耗设计。详细介绍了存储阵列、地址解码器等关键模块,以及自刷新与自动刷新模式的区别。通过实测数据和技术细节,揭示LPDDR4x在性能优化和功耗控制方面的创新设计,为硬件工程师提供实用参考。

weixin_29278805的博客 307

Vue-Input-Tag: 创新标签输入组件,赋能前端交互设计

在前端开发中,高效、灵活的UI组件常常是提升用户体验的关键。今天我们要向大家推荐的是一个名为的开源项目,它是一个基于Vue.js的轻量级输入标签组件,旨在为用户提供直观且可自定义的多标签输入体验。 ## 项目简介 Vue-Input-Tag是由开发者Matias Tucci创建并维护的一个小巧实用的Vue插件。它允许用户通过文本框输入内容,并以标签的形式展示,支持动态添加和删除标签,极大地丰富...

gitblog_00068的博客 968

IDEA集成selenium自动化测试(Java+Selenuim+testNG+Maven)

文章目录写在前面01 | 新建Maven项目02 | idea集成Selenium03 | 写在前面 因为软件测试的需求和博主比较经常使用Java,于是,想在Idea中集成selenuim,用Java编写测试代码,因此有了这篇文章来记录一下过程。 资源指路: java使用selenium实现模拟浏览器操作API大全 模拟登录 TestNG入门教程 感谢上面博客的大佬。 01 | 新建Maven项目 不使用骨架创建,直接点击左侧Maven,然后一路next即可。 02 | idea集成Sele

aLinxi的博客 8279

多目标跟踪中使用trackeval评估dancetrack运行结果

trackeval使用

qq_46144849的博客 1782

vue+element 实现input内添加tag+tag的自定义变色

vue+element 实现input内添加tag+tag的自定义变色

qq_44426236的博客 8198

论文超详细精读|万字:2s-AGCN

1. 提出了一种新的双流自适应图卷积网络(2S-AGCN)用于基于骨架的动作识别。**模型中的图的拓扑既可以统一地学习,也可以通过BP算法以端到端的方式单独学习。** 2. 提出了一种同时对**一阶和二阶信息(骨架的长度与方向)建模的双流框架**,在识别精度上有了显著的提高。 它将骨架数据的图结构参数化,并嵌入到网络中,与模型共同学习和更新。 3. 文章主要创新点有两个,一个是双流网络,另外一个是自适应。

IanYue的博客 6382

vue 字符串分割_嗯哼vue组件taginput包教不包会

5分钟实现一个Tag-Input(标签)组件前言本文是wo写组件设计的第一篇文章(处女作),之所以会写组件设计相关的文章,是因为作为一名优秀的前端工程师,面对各种繁琐而重复的工作,我们不应该按部就班的去辛(dao)勤(gen)劳(huo)动(zhong),而是要根据已有前端的开发经验,总结出一套自己的高效开发的方法。作为数据驱动的领导者vue等MVVM框架的出现,帮我们减少了工作中大量的...

weixin_31967737的博客 524

自动驾驶---Planning模块详细介绍(以Apollo为例)

主要介绍高速场景下Planning模块,至于低速的泊车场景对比高速场景或者城区场景有比较大的差距(后面也会介绍泊车场景),本篇Planning介绍主要包括三大子模块Routing,Behavioural Planning以及Motion Planining,并且对比较重要的Decider和Optimizer都做了通俗化的说明供大家思考,以便于后续理解更深入的内容,后面有时间会再开一些篇幅对这些模块进行更加深入的讲解。

智能汽车人的博客 2084

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

input 回车生成tag标签

input 回车生成tag标签

NancyFyn的博客 1867

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

高效AI翻译实战:开源Galgame汉化工具的完整使用方案

还在为日文游戏的语言障碍而烦恼吗?GalTransl是一款支持GPT-4/Claude/Deepseek/Sakura等大语言模型的Galgame自动化翻译解决方案,让日文游戏秒变中文。这款开源工具专为视觉小说汉化而生,通过智能AI翻译引擎和自动化流程,让普通用户也能轻松完成专业级游戏本地化。 ## 🎯 问题引入:传统游戏汉化的痛点 传统游戏汉化需要专业的编程知识、文本提取工具和翻译团队协作

gitblog_01252的博客 450

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

vue项目中封装一个el-input支持输入标签tag类

el-input支持输入标签tag类参照el-select组件源码进行修改!

2301_76285550的博客 2062

【亲测免费】 Vue-input-tag 使用指南

Vue-input-tag 是一个基于 Vue.js 2.0 的标签输入组件,设计灵感源自 react-tagsinput。该组件提供了一个简洁的方式让用户能够输入并管理一组标签,适用于多分类选择、关键词标记等多种场景。 ## 安装指南 ### NPM 或 Yarn 方式 若您的项目是通过 NPM 或 Yarn 管理依赖,可以采用以下命令进行安装: ```bash npm install ...

gitblog_01253的博客 1035

标签输入框tag-input:仿QQ邮箱来增强你的组件交互与界面展示

输入框的场景实在太多太多了,但我们偶尔也会碰到一些个性化的需求,今天给大家介绍的就是类似上面这样,可以显示标签的输入框。 先来假设一下我们的输入需求: 能对输入的内容进行校验、可以在任意位置插入新标签、可以拖动标签进行排序换位置、支持键盘快捷键操作、支持自定义插槽以丰富组件定制化...

zhang_hai_cheng的博客 1770

vue 使用原生input输入框结合el-tag标签实现添加多个字段完成表单搜索功能

【代码】vue 使用原生input输入框结合el-tag标签实现添加多个字段完成表单搜索功能。

m0_63006013的博客 4889

【input输入框回车生成标签】vue简单实现input输入框内输入后回车创建一个标签功能【详细注释版本】

这个功能很多地方会用到,比如我们的csdn发文章发问题就用到了这个功能。一个输入框内输入你想要的标签,然后回车就会创建出来一个标签,这个标签也是在这个输入框的里面的。我网上看了下,这种功能帖子没看到几个,这里就整理一下,写一个帖子。......

seeeeeeeeeee的博客 6505

如何快速安装和配置 Vue Input Tag 组件:完整指南

Vue Input Tag 是一款强大的 Vue.js 2.0 输入标签编辑组件,能够帮助开发者轻松实现标签的添加、删除和管理功能。本指南将详细介绍如何快速安装、配置并使用这个实用组件,让你的项目开发效率提升 50%! ## 📦 两种简单安装方式 ### 1. npm 安装(推荐) 通过 npm 安装是最便捷的方式,只需在项目根目录执行以下命令: ```bash npm install vu

gitblog_01264的博客 883

+new tag标签el-tag vue与elementui

官网的是只有一个tag标签的例子,表格的展开行是多个tag标签,若如上写inputValue和inputVisible只在data中定义一次,则每个tag标签绑定的值都是同一个会互相受影响,现改成如下(在表格获取数据的时候定义的inputValue和inputVisible):

00年女程序员分享自己的学习笔记 906

Vue-input-tag 项目常见问题解决方案

Vue-input-tag 是一个基于 Vue.js 2.0 的输入标签组件,它允许用户在输入框中添加和删除标签。该组件的主要编程语言是 JavaScript。 ## 1. 项目基础介绍 Vue-input-tag 组件允许用户以动态的方式添加和删除标签。它支持自定义验证、限制标签数量、防止重复添加等功能。组件的用法简单,易于集成到 Vue.js 应用程序中。 ## 2. 新手常见问题及解决...

gitblog_00713的博客 526

ElementUI案例演示:导航、布局、加载动画

知识点1.vue-router之嵌套路由 http://router.vuejs.org/zh-cn/essentials/nested-routes.html 2.element-ui 导航组件、布局组件、加载动画 http://element.eleme.io/#/zh-CN/component/menu http://element.eleme.io/#/zh-CN/componen

14万+
上一篇: [数据表设计] - 商品模型数据架构图
下一篇: 支付宝即时到账接口开发 - DEMO讲解
学习笔记666
博客等级 码龄12年 1047粉丝 1369原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值