مكون الإكمال التلقائي لـ Vue 2. يعتمد على الإكمال التلقائي vue. عرض حي هنا!
يمكنك استيراد vue2-autocomplete.vue إلى ملف مكون vue الخاص بك مثل هذا ومعالجته باستخدام المعالج المسبق الخاص بك.
يمكنك تثبيته عبر NPM
npm install vue2-autocomplete-js
أو فقط ضعه بعد Vue JS~
< script src =" https://vuejs.org/js/vue.min.js " > </ script >
< script src =" ./dist/vue2-autocomplete.js " > </ script >
< script >
// Don't Forget to register it
new Vue ( {
components : {
autocomplete : Vue2Autocomplete
}
} ) ;
</ script >
لا تنس استيراد vue 2 css. يمكنك ربطه عبر html
< link rel =" stylesheet " href =" vue2-autocomplete-js/dist/style/vue2-autocomplete.css " >
أو يمكنك استيراده باستخدام commonJS
require ( 'vue2-autocomplete-js/dist/style/vue2-autocomplete.css' )
أسلوبه قابل للتخصيص للغاية. يمكنك وضع أي CSS فوقه. ويمكنك إضافة فئة مخصصة عبر الدعامة الخاصة بها.
import Autocomplete from 'vue2-autocomplete-js'
// Or
var Autocomplete = require ( 'vue2-autocomplete-js' ) ;
< template >
< autocomplete
url =" http://localhost/proyek/goodmovie/api/api/v1/search "
anchor =" title "
label =" writer "
:on-select =" getData " >
</ autocomplete >
</ template >
< script >
import Autocomplete from 'vue2-autocomplete-js' ;
export default {
components : { Autocomplete } ,
methods : {
getData ( obj ) {
console . log ( obj ) ;
}
}
} ;
</ script >
الدعائم المتاحة
< template >
< autocomplete
url =" http://localhost/proyek/goodmovie/api/api/v1/search "
anchor =" title "
label =" writer "
:onSelect =" getData "
:customParams =" { token: 'dev' } "
:customHeaders =" { Authorization: 'bearer abc123' } "
:required =" true "
id =" custom id "
className =" custom class name "
:classes =" { wrapper: 'form-wrapper', input: 'form-control', list: 'data-list', item: 'data-list-item' } "
placeholder =" placeholder "
:initValue =" initial value "
:options =" [] "
:min =" 3 "
:debounce =" 2000 "
:filterByAnchor =" true "
:encodeParams =" true "
:onShouldGetData =" getData "
:onInput =" callbackEvent "
:onShow =" callbackEvent "
:onBlur =" callbackEvent "
:onHide =" callbackEvent "
:onFocus =" callbackEvent "
:onSelect =" callbackEvent "
:onBeforeAjax =" callbackEvent "
:onAjaxProgress =" callbackEvent "
:onAjaxLoaded =" callbackEvent "
:onShouldRenderChild =" renderChild "
>
</ autocomplete >
</ template >
يجب أن يكون عنوان URL نشطًا (وليس من الملف). سيقوم المكون بجلب JSON من عنوان URL هذا وتمرير استعلام واحد (افتراضي: q
). يحب:
http://some-url.com/API/list?q=
لا يوجد أي مرشح وإجراءات محدودة داخل المكون. لذلك، قم بذلك في منطق API الخاص بك.
اسم معلمة البحث للاستعلام عنها في مكالمة Ajax. الافتراضي هو q
الحد الأدنى من الأحرف المكتوبة قبل إجراء استعلام البحث. الافتراضي هو 0
إنه مسار خاصية كائن يستخدم لـ Anchor في قائمة الاقتراحات. سيحصل مثال anchor="name"
على خاصية الاسم لكائن JSON الخاص بك. مثل ("Bambang"، "Sukijan"، "Bejo") في العرض التوضيحي أعلاه. أو يمكنك الوصول إلى القيمة العميقة لكائنك. مثل anchor="geometry.location.lat"
نفس المرساة ولكنها تستخدم للعنوان الفرعي أو وصف القائمة
قم بتمرير مجموعة من خيارات القائمة يدويًا إلى الإكمال التلقائي.
عندما تستخدم خيارات الدعائم، يمكنك الحصول على الإكمال التلقائي لتصفية بياناتك. أو يمكنك فقط إظهار بياناتك مباشرةً دون الحاجة إلى أي فلتر من الإكمال التلقائي. سيتم تصفية الخيارات حسب المرساة ووفقًا لإدخال المستخدم.
سيقوم الإكمال التلقائي encodeURIComponent
لجميع المعلمات الخاصة بك قبل إرسال ajax، عندما يتم تعيين هذه الدعائم على true
. الافتراضي true
رقم 35
تأخير الوقت قبل إجراء اياكس للبيانات
السمة المطلوبة للإدخال
العنصر النائب للإدخال
اسم فئة مخصصة لمكون الإكمال التلقائي
فئة مخصصة محددة لكل جزء. متاح: المجمع، الإدخال، القائمة، والعنصر
اسم معرف مخصص لمكون الإكمال التلقائي
عدد المللي ثانية التي يجب على المستخدم التوقف عن الكتابة فيها قبل إرسال الطلب. القيمة الافتراضية هي 0، مما يعني أن جميع الطلبات يتم إرسالها على الفور.
وظيفة لمعالجة نتيجة واجهة برمجة التطبيقات (API) بها. يجب أن يُرجع مصفوفة من الإدخالات أو كائنًا يمكن تعداد خصائصه.
وظيفة لمعالجة كل نتيجة. يأخذ نوع عنصر رد واجهة برمجة التطبيقات (API) ويجب أن يعرض بيانات HTML.
يمكنك إجراء حدث رد الاتصال عبر الدعائم.
عند إدخال الحدث في الإكمال التلقائي
في عرض الحدث في قائمة الإكمال التلقائي
عندما يكون الإكمال التلقائي غير واضح
عندما تكون قائمة الإكمال التلقائي مخفية
عند الإكمال التلقائي للإدخال في وضع التركيز
عندما يختار المستخدم عنصرًا واحدًا في القائمة
قبل إرسال اياكس
بينما يقوم اياكس بجلب البيانات
عندما يتم تحميل عملية اياكس بالكامل
معالجة عملية اياكس بأكملها يدويًا. إذا كان وعدًا، فيجب أن يحل خيارات قائمة الإكمال التلقائي. إذا لم يكن وعدًا، فيمكنك تمرير الخيارات يدويًا إلى دعائم الإكمال التلقائي
< autocomplete
anchor =" formatted_address "
label =" formatted_address "
:onShouldGetData =" getData "
>
</ autocomplete >
methods: {
promise ( value ) {
return new Promise ( ( resolve , reject ) => {
let ajax = new XMLHttpRequest ( ) ;
ajax . open ( 'GET' , `https://maps.googleapis.com/maps/api/geocode/json?address= ${ value } ` , true ) ;
// On Done
ajax . addEventListener ( 'loadend' , ( e ) => {
const { responseText } = e . target
let response = JSON . parse ( responseText ) ;
// The options to pass in the autocomplete
resolve ( response . results )
} ) ;
ajax . send ( ) ;
} )
} ,
nonPromise ( ) {
getData ( value ) {
let ajax = new XMLHttpRequest ( ) ;
ajax . open ( 'GET' , `https://maps.googleapis.com/maps/api/geocode/json?address= ${ value } ` , true ) ;
// On Done
ajax . addEventListener ( 'loadend' , ( e ) => {
const { responseText } = e . target
let response = JSON . parse ( responseText ) ;
// The options to pass in the autocomplete props
this . options = response . results ;
} ) ;
ajax . send ( ) ;
} ,
}
}
قم بمعالجة النتيجة قبل استرداد مصفوفة النتائج. يمكنك تشكيل بياناتك هنا قبل تمريرها إلى الإكمال التلقائي
هل تريد استخدام قالب مخصص للقائمة؟ الآن، يمكنك أن تفعل ذلك!
< autocomplete
anchor =" formatted_address "
label =" formatted_address "
:onShouldRenderChild =" renderChild "
>
</ autocomplete >
methods: {
renderChild ( data ) {
return `
<img src=" ${ data . src } " />
<span> ${ data . something } </span>
`
} ,
}
يمكنك القيام ببعض الطرق عن طريق الوصول إلى المكون عبر جافا سكريبت.
this . $refs . autocomplete . someMethod ( )
لتعيين قيمة إدخال الإكمال التلقائي
فقط اتصل بي على:
حقوق الطبع والنشر لمعهد ماساتشوستس للتكنولوجيا (ج) 2016 - للأبد نوفل رباني