Vue2.x通用编辑组件的封装及应用详解

本文实例为大家分享了Vue2.x通用编辑组件的封装及应用,供大家参考,具体内容如下

效果

组件源码

<template>
 <div class="edit-input">
  <div class="editBox">
   <div>
    <span class="list">{{ name }}:</span>
    <span class="listValue" v-if="!editStatus">{{value}}</span>
   </div>
   <span class="editLogo iconfont icon-Edit" @click="editStatus = !editStatus" v-if="!editStatus"></span>
   <div class="edit" v-if="editStatus">
    <el-input v-model="newValue" :placeholder="placeholderDes"></el-input>
    <span class="confirmEdit" @click="changeValue">√</span>
    <span class="cancel" @click="editStatus = !editStatus">×</span>
   </div>
  </div>
 </div>
</template>

<script>
import '@/common/font/iconfont.css'
export default {
 props: {
  name: {
   type: String,
   require: true
  },
  value: {
   type: String,
   require: true
  },
  placeholderDes: {
   type: String,
   default: ''
  }
 },
 data () {
  return {
   newValue: '',
   editStatus: false
  }
 },
 methods: {
  changeValue () {
   this.$emit('valueChange', this.newValue)
   this.editStatus = false
  }
 }
}
</script>

<style lang="less" scoped>
.edit-input {
 .editBox {
  display: flex;
  margin-top: 10px;
  text-align: center;
  .list {
    color: #909399;
    font-size: 14px;
    line-height: 40px;
    display: inline-block;
   }
   .listValue {
    color: #303133;
    font-size: 14px;
    line-height: 26px;
   }
  .editLogo {
   color: #2695E4;
   padding-top: 12px;
   padding-left: 10px;
  }
  .edit{
   height: 50px;
   width: 260px;
   .confirmEdit {
    margin-left: 4px;
    width: 20px;
    height: 36px;
    display: inline-block;
    color: #67c23a;
    font-size: 20px;
    cursor: pointer;
   }
   .cancel {
    color: #929398;
    font-size: 20px;
    margin-left: 6px;
    cursor: pointer;
    width: 20px;
    height: 36px;
    display: inline-block;
    font-size: 26px;
    &:hover {
     color: #fa5555;
    }
   }
   .el-input {
    width: 200px;
   }
  }
 }
}
</style>

父组件中引用

<template>
 <div class="test">
  <v-edit-input placeholderDes="请输入新名称" name="测试名称" value="哈哈哈哈" @valueChange="changeValue"></v-edit-input>
 </div>
</template>

<script>
import VEditInput from '@/components/Common/EditInput'
export default {
 components: {
  VEditInput
 },
 methods: {
  changeValue (newVal) {
   // newVal即为修改后的新值,接下来用来与后端交互即可。
  }
 }
}
</script>

注:组件源码中import '@/common/font/iconfont.css'目的是为了引入编辑图标,图标使用于iconfont官网使用svg制作,实际应用时请删除此行代码,改为你自己的图标,即给.editLogo加个背景图即可。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • vue富文本编辑器组件vue-quill-edit使用教程

    之前使用的富文本编辑器是uEditor,kindEditor,感觉不太方便. 近期项目vue单页面,就使用vue-quill-edit这个编辑器组件吧! 一.安装  cnpm install vue-quill-editor 二.引入 在main.js引入并注册: import VueQuillEditor from 'vue-quill-editor' // require styles 引入样式 import 'quill/dist/quill.core.css' import 'quill

  • vue 封装自定义组件之tabal列表编辑单元格组件实例代码

    vue 封装自定义组件 tabal列表编辑单元格组件 <template> <div class="editable-cell"> <div class="editable-cell-input-wrapper" v-if='editable'> <el-input class="editInput" v-model="cellValue" placeholder="请输入内

  • Vue2.x通用编辑组件的封装及应用详解

    本文实例为大家分享了Vue2.x通用编辑组件的封装及应用,供大家参考,具体内容如下 效果 组件源码 <template> <div class="edit-input"> <div class="editBox"> <div> <span class="list">{{ name }}:</span> <span class="listValue"

  • 在Vue2中注册全局组件的两种方法详解

    第一种:在main.js中直接注册 //引入 import FixedTop from '@/components/FixedTop //注册为全局组件 Vue.componet('FixedTop',FixedTop) //页面直接使用 <FixedTop /> 缺点:如果我们需要注册的全局组件非常多,那么需要一个一个引入,然后分别调用Vue.componet方法,main.js文件会变得很大很臃肿,不好维护,所以当需要注册的全局组件非常多的时候可以采用插件的形式注册 第二种:使用插件的形式

  • Vue2.x通用条件搜索组件的封装及应用详解

    本文实例为大家分享了Vue2.x通用条件搜索组件的封装及应用,供大家参考,具体内容如下 效果   组件源码 <template> <div class="search"> <el-select v-model="type" @change="changeType" class="select"> <el-option v-for="item in selectItems&qu

  • IOS 照片编辑的view封装的实例详解

    IOS 照片编辑的view封装 该控件有旋转,缩放,拖动,剪裁的功能,封装成了一个ImageCropperView类 需要导入的库:QuartzCore.framework ImageCopperView.h #import <UIKit/UIKit.h> @protocol ImageCropperDelegate; @interface ImageCropperView : UIView { UIImageView *imageView; id <ImageCropperDelega

  • 移动端滑动切换组件封装 vue-swiper-router实例详解

    具体代码如下所述: <strong>组件部分</strong> <template> <div class="main"> <div class="page-tab"> <div :class="nowPath == item.path ? 'tab-item tab-item_active' : 'tab-item'" v-for='(item, index) in tabLis

  • vue组件三大核心概念图文详解

    前言 本文主要介绍属性.事件和插槽这三个vue基础概念.使用方法及其容易被忽略的一些重要细节.如果你阅读别人写的组件,也可以从这三个部分展开,它们可以帮助你快速了解一个组件的所有功能. 本文的代码请猛戳 github博客 ,纸上得来终觉浅,大家动手多敲敲代码! 一.属性 1.自定义属性props prop 定义了这个组件有哪些可配置的属性,组件的核心功能也都是它来确定的.写通用组件时,props 最好用对象的写法,这样可以针对每个属性设置类型.默认值或自定义校验属性的值,这点在组件开发中很重要,

  • Android Intent封装的实例详解

    Android Intent封装的实例详解 什么是Intent: Intent是协调应用间.组件之间的通讯和交互.通过Intent你可以启动Activity.Service.Broadcasts.更可以跨程序调用第三方组件.例如:启动拨打电话界面.音乐播放等. 组件     启动 Activity startActicity() Service startService(),bindService( ) Broadcasts sendBroadcast() 使用Intent: 栗子:在一个Act

  • jQuery Ajax 全局调用封装实例代码详解

    有一种情况:全站都要用异步方式来调用 数据,提交数据,那么你每次操作 都会要$.ajax({.....}) 写重复的方法 和代码,冗余太大, 也浪费时间,虽说你有代码自动提示补全,但真的不优雅,身为前端极客,是不能允许的! [嘿嘿!虽说我现在基本不用jquery了 ,不过异步概念 是永远要用的,就帮助下新人] jQuery Ajax通用js封装 第一步:引入jQuery库 <script type="text/javascript" src="/js/jquery.mi

  • vue2.0项目实现路由跳转的方法详解

    一.安装 1.安装路由vue-router: npm install vue-router vue项目的依赖文件node_modules存在vue-router依赖,说明安装成功 2.vue项目引入vue-ruoter: 二.应用 1.路径配置(页面跳转): 方法一:如果切换的页面不多,可以直接在main.js文件内配置. 方法二:如果切换的页面较多,可以建一个专门用于路由的js文件,里面配置路径. 1)router.js配置文件 2)main.js里引入router.js路由文件 2.组件里调

  • vue 自定义组件的写法与用法详解

    三个技能,父组件 -> 子组件传值(props).子组件 -> 父组件传值(emit用来使这个独立的组件通过一些逻辑来融入其他组件中.举个具体点的例子,假如你要做一辆车,车轮是要封装的一个独立组件,props指的就是根据整个车的外形你可以给轮子设置一些你想要的且符合车风格的花纹,图案等:而$emit的作用则是让这些轮子能够和整辆车完美契合的运作起来. (1)使用props可以实现父子组件之间的传值 (2)使用this.$emit()可是实现子组件调用父组件的方法 一.在commponents文

随机推荐