vue-ele-editable es un componente de edición en línea de element-ui eficiente, simple y potente. Después de hacer referencia al componente, la función de edición en línea solo se puede completar a través de datos. Las características específicas son las siguientes:
Para ayudarlo a comprenderlo y usarlo mejor, si el número de estrellas supera las 100, hay una explicación del código fuente del video. Espero poder darle una estrella.
https://codepen.io/dream2023/pen/dBNNbP
npm install vue-ele-editable --save
import EleEditable from 'vue-ele-editable'
Vue . use ( EleEditable )
// 在引入 EleEditable 时,可以传入一个全局配置对象
// key 是组件名, value 是组件的属性, 例如:
Vue . use ( EleEditable , {
// 所有 image 类型的组件都会有 lazy: true 的属性
image : {
lazy : true
} ,
// 所有的 number 类型的组件都会有 step: 10 的属性
number : {
step : 10
} ,
...
} )
props: {
// 类型
type : {
type : String ,
default : 'text'
} ,
// 字段
field : {
type : String ,
required : true
} ,
// 是否为行内
inline : {
type : Boolean ,
default : false
} ,
// 标题
title : String ,
// 字段值
value : [ String , Number , Boolean , Array , Date ] ,
// 默认值
defaultValue : {
type : [ String , Number , Boolean , Array , Date ] ,
default : null
} ,
// 自定义组件是否需要包裹
isNoWrapper : {
type : Boolean ,
default : false
} ,
// 选项
options : {
type : Array ,
default ( ) {
return [ ]
}
} ,
// 请求地址
requestFn : Function ,
// 校检规则
rules : [ Array , Object ] ,
// 其他附带数据
customData : Object ,
// 自定义属性
customAttrs : Object ,
// 格式化显示数据
displayFormatter : Function ,
// 对请求数据格式化
valueFormatter : Function ,
// 值空时显示的文本
emptyText : {
type : String ,
default : '空'
}
}
type
se utiliza para especificar los componentes de renderizado. Los componentes integrados actualmente admitidos son:
tipo | significado | Referencia de propiedad |
---|---|---|
texto | texto estático | |
imagen | Imagen única/varias imágenes | galería-vue-ele |
subir-imagen | Subir fotos | vue-ele-subir-imagen |
aporte | Una sola línea de texto editable | entrada elemento-ui |
área de texto | Texto editable de varias líneas | entrada elemento-ui |
seleccionar | cuadro desplegable | elemento-ui seleccionar |
número | Números editables | elemento-ui número de entrada |
radio | elección única | radio elemento-ui |
caja | opción múltiple | casilla de verificación elemento-ui |
fecha y hora | Fecha y hora editables (acepta marca de tiempo, cadena, valor de tipo de fecha) | selector de fecha y hora de elemento-ui |
texto de fecha y hora | Fecha y hora no editables (los valores aceptados son los mismos que los anteriores) | |
fecha | Fecha editable (los valores aceptados son los anteriores) | selector de fecha elemento-ui |
texto-fecha | Fecha no editable (los valores aceptados son los mismos que los anteriores) | |
tiempo | Hora editable (los valores aceptados son los mismos que los anteriores) | selector de tiempo elemento-ui |
texto-tiempo | Hora no editable (los valores aceptados son los mismos que los anteriores) | |
estado | estado | etiqueta elemento-ui |
cambiar | cambiar | interruptor elemento-ui |
URL | Enlace | |
color | color | selector de color elemento-ui |
Cuando type
no es ninguno de los tipos anteriores, se representará de acuerdo con el nombre pasado. Puede personalizar el componente de extensión. Para obtener más información, consulte la tasa de ejemplo de extensión personalizada y el control deslizante de ejemplo de extensión personalizada. vea el ejemplo en línea.
isNoWrapper
se usa para definir si un componente personalizado debe empaquetarse. Por ejemplo, la entrada es un componente empaquetado, cambiar significa no empaquetar el componente. Solo se puede cambiar si el componente incorporado está empaquetado. componente personalizado. Por ejemplo, el componente rate
anterior no está ajustado y slider
no está ajustado. Es el componente del paquete.
Atributos del componente personalizado customAttrs
, por ejemplo, cambiar la entrada en un cuadro de contraseña:
{
type : 'input' ,
// 属性参考 element-ui input组件
customAttrs : {
'show-password' : true
}
}
field
se utiliza para enviar solicitudes como key
de datos, por ejemplo:
{
value: 'zhang'
field: 'name'
}
// 最终发送的数据为:
{
name : 'zhang'
}
inline
se usa para especificar si se usa el modo popover
o inline
. El valor predeterminado es popover
.
title
utiliza para el título de la ventana emergente
valor value
, se puede vincular con v-model
defaultValue
reemplaza value
cuando value
no existe, por ejemplo:
{
value : '' ,
field : 'name' ,
defaultValue : '匿名'
}
// 最终显示到屏幕上为: 匿名
displayFormatter
se utiliza para el procesamiento posterior de la visualización de valores, por ejemplo:
// 伪代码
{
value : 10 ,
displayFormatter : function ( value ) {
return ` ${ value } 岁`
}
}
// 最终显示到屏幕上为: 10 岁
emptyText
se utiliza para mostrar una cadena cuando no hay datos, por ejemplo:
{
field : 'mobile' ,
// 当 value, defaultValue 和 displayFormatter都返回空时, 才起作用
value : '' ,
defaultValue : '' ,
displayFormatter : null ,
emptyText : '无手机可用'
}
// 最终显示到屏幕上为: 无手机可用
options
se utilizan para las opciones de los componentes de casilla de verificación, radio, selección y estado, y admiten matrices de objetos y matrices de cadenas:
// 对象数组形式 (text 用于展示, 实际值是 value)
options: [ { text : '男' , value : 'male' } , { text : '女' , value : 'female' } ]
// 字符串数组 (相当于 [{ text: '男', value: '男' }, { text: '女', value: '女' }])
options: [ '男' , '女' ]
Función de solicitud requestFn
. Esta función eventualmente devolverá un ejemplo Promise
, que se utiliza para determinar el estado y el resultado de la solicitud.
Hay dos situaciones. Una es que necesita procesar el resultado de la respuesta de la solicitud original y puede aplicar una capa de Promesa:
// 伪代码
async function requestFn ( data ) {
return new Promise ( ( resolve , reject ) => {
try {
const res = await axios . post ( '/post' , data )
// 对res做各种处理
. . .
resolve ( )
} catch ( e ) {
reject ( e )
}
} )
}
Otro método es que no se requiere procesamiento y se puede devolver un objeto Promise
directamente.
async function requestFn ( data ) {
return axios . post ( '/post' , data )
}
rules
se utilizan para la verificación. Las reglas de verificación son las mismas que la forma de element-ui. Todas usan un validador asíncrono y admiten formas de matriz y de objeto.
// 对象
rules: {
required : true ,
message : '名称不能为空'
}
// 数组
rules: [
{ type : 'number' , message : '年龄必须填写数字' } ,
{ required : true , message : '年龄必填填写' }
]
customData
se utiliza para transportar datos adicionales, como por ejemplo:
// 伪代码
// props的值
{
field : 'name' ,
value : 'zhangchaojie' ,
customData : {
id : 10 ,
status : 1
}
}
// 最终发送的数据为:
{
name : 'zhangchaojie' ,
id : 10 ,
status : 1
}
valueFormatter
se utiliza para el procesamiento posterior de los datos de la solicitud, por ejemplo:
// 伪代码
// props 值
field: 'age' ,
value : 10 ,
customData : { id : 1 } ,
valueFormatter : function ( value ) {
return value + 1
}
// 最终发送的值为:
{
age : 11 ,
id : 1
}