vue-ele-editable هو مكون تحرير مضمن فعال وبسيط وقوي لواجهة المستخدم. بعد الرجوع إلى المكون، لا يمكن إكمال وظيفة التحرير المضمنة إلا من خلال البيانات.
لمساعدتك على فهمه واستخدامه بشكل أفضل، إذا تجاوز عدد النجوم 100، يوجد شرح لكود مصدر الفيديو، آمل أن أتمكن من منحك نجمة؟؟؟
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
لتحديد مكونات العرض المدعومة حاليًا وهي:
يكتب | معنى | مرجع الملكية |
---|---|---|
نص | نص ثابت | |
صورة | صورة واحدة/صور متعددة | معرض فيو إلي |
تحميل الصورة | تحميل الصور | vue-ele-upload-image |
مدخل | قابل للتحرير سطر واحد من النص | إدخال عنصر واجهة المستخدم |
منطقة النص | نص متعدد الأسطر قابل للتحرير | إدخال عنصر واجهة المستخدم |
يختار | المربع المنسدل | حدد عنصر واجهة المستخدم |
رقم | أرقام قابلة للتحرير | رقم إدخال عنصر واجهة المستخدم |
راديو | اختيار واحد | راديو عنصر واجهة المستخدم |
خانة الاختيار | الاختيار من متعدد | مربع اختيار عنصر واجهة المستخدم |
التاريخ والوقت | التاريخ والوقت القابلان للتحرير (يقبل الطابع الزمني والسلسلة وقيمة نوع التاريخ) | عنصر واجهة المستخدم منتقي التاريخ والوقت |
نص التاريخ والوقت | التاريخ والوقت غير قابلين للتحرير (القيم المقبولة هي نفسها المذكورة أعلاه) | |
تاريخ | تاريخ قابل للتحرير (القيم المقبولة هي كما هو مذكور أعلاه) | منتقي تاريخ عنصر واجهة المستخدم |
نص التاريخ | تاريخ غير قابل للتحرير (القيم المقبولة هي نفسها المذكورة أعلاه) | |
وقت | الوقت القابل للتحرير (القيم المقبولة هي نفسها المذكورة أعلاه) | منتقي الوقت لعنصر واجهة المستخدم |
نص الوقت | وقت غير قابل للتحرير (القيم المقبولة هي نفسها المذكورة أعلاه) | |
حالة | ولاية | علامة عنصر واجهة المستخدم |
يُحوّل | يُحوّل | تبديل عنصر واجهة المستخدم |
عنوان URL | وصلة | |
لون | لون | منتقي الألوان لعنصر واجهة المستخدم |
عندما لا يكون type
أحد الأنواع المذكورة أعلاه، فسيتم عرضه وفقًا للاسم الذي تم تمريره. يمكنك تخصيص مكون الامتداد للحصول على التفاصيل، يرجى الرجوع إلى معدل مثال الامتداد المخصص وشريط تمرير مثال الامتداد المخصص، من فضلك انظر المثال على الانترنت.
يتم استخدام isNoWrapper
لتحديد ما إذا كان المكون المخصص يحتاج إلى التغليف، على سبيل المثال، الإدخال عبارة عن مكون مغلف، ويعني التبديل عدم تغليف المكون، ولا يمكن تغييره إلا المكون المخصص، على سبيل المثال، لم يتم تغليف مكون rate
أعلاه، ولم يتم تغليف مكون slider
، وهو مكون الحزمة
سمات المكون المخصص customAttrs
، على سبيل المثال، تغيير الإدخال في مربع كلمة المرور:
{
type : 'input' ,
// 属性参考 element-ui input组件
customAttrs : {
'show-password' : true
}
}
يستخدم field
لإرسال الطلبات key
للبيانات، على سبيل المثال:
{
value: 'zhang'
field: 'name'
}
// 最终发送的数据为:
{
name : 'zhang'
}
يتم استخدام inline
لتحديد ما إذا popover
تريد استخدام الوضع popover
أو الوضع inline
.
title
لعنوان النافذة المنبثقة
قيمة value
، يمكن ربطها v-model
تستبدل defaultValue
value
في حالة عدم وجودها value
على سبيل المثال:
{
value : '' ,
field : 'name' ,
defaultValue : '匿名'
}
// 最终显示到屏幕上为: 匿名
يتم استخدام displayFormatter
لمزيد من المعالجة لعرض القيمة، على سبيل المثال:
// 伪代码
{
value : 10 ,
displayFormatter : function ( value ) {
return ` ${ value } 岁`
}
}
// 最终显示到屏幕上为: 10 岁
يُستخدم emptyText
لعرض سلسلة في حالة عدم وجود بيانات، على سبيل المثال:
{
field : 'mobile' ,
// 当 value, defaultValue 和 displayFormatter都返回空时, 才起作用
value : '' ,
defaultValue : '' ,
displayFormatter : null ,
emptyText : '无手机可用'
}
// 最终显示到屏幕上为: 无手机可用
يتم استخدام options
لخيارات مربع الاختيار، والراديو، والتحديد، ومكونات الحالة، ودعم صفائف الكائنات ومصفوفات السلسلة:
// 对象数组形式 (text 用于展示, 实际值是 value)
options: [ { text : '男' , value : 'male' } , { text : '女' , value : 'female' } ]
// 字符串数组 (相当于 [{ text: '男', value: '男' }, { text: '女', value: '女' }])
options: [ '男' , '女' ]
وظيفة طلب requestFn
، ستعيد هذه الوظيفة في النهاية مثالًا Promise
، والذي يُستخدم لتحديد حالة الطلب ونتيجته
هناك حالتان: الأول هو أنك تحتاج إلى معالجة نتيجة الاستجابة للطلب الأصلي، ويمكنك تطبيق طبقة من الوعد:
// 伪代码
async function requestFn ( data ) {
return new Promise ( ( resolve , reject ) => {
try {
const res = await axios . post ( '/post' , data )
// 对res做各种处理
. . .
resolve ( )
} catch ( e ) {
reject ( e )
}
} )
}
هناك طريقة أخرى وهي عدم الحاجة إلى معالجة ويمكن إرجاع كائن Promise
مباشرةً.
async function requestFn ( data ) {
return axios . post ( '/post' , data )
}
يتم استخدام rules
للتحقق. قواعد التحقق هي نفس شكل element-ui. جميعها تستخدم أداة التحقق غير المتزامن وتدعم كلاً من نماذج المصفوفات والكائنات.
// 对象
rules: {
required : true ,
message : '名称不能为空'
}
// 数组
rules: [
{ type : 'number' , message : '年龄必须填写数字' } ,
{ required : true , message : '年龄必填填写' }
]
تُستخدم customData
لنقل بيانات إضافية، مثل:
// 伪代码
// props的值
{
field : 'name' ,
value : 'zhangchaojie' ,
customData : {
id : 10 ,
status : 1
}
}
// 最终发送的数据为:
{
name : 'zhangchaojie' ,
id : 10 ,
status : 1
}
يتم استخدام valueFormatter
لمزيد من المعالجة لبيانات الطلب، على سبيل المثال:
// 伪代码
// props 值
field: 'age' ,
value : 10 ,
customData : { id : 1 } ,
valueFormatter : function ( value ) {
return value + 1
}
// 最终发送的值为:
{
age : 11 ,
id : 1
}