مساء الخير في هذه المقالة ، سأقوم بتحليل طريقة تسمح لك بإظهار نافذة مشروطة لاحتياجاتنا عند تغيير العنوان. أعلم أن هناك حلاً خاصًا بمكون الوسائط
على الموقع الرسمي . بالإضافة إلى ذلك ، هناك العديد من المقالات الأخرى حول Habré المكرسة لموضوع windows مشروط في VueJs (على سبيل المثال ،
هذا واحد ).
ومع ذلك ، في رأيي ، كل منهم له عيوبه ، على سبيل المثال:
- في حالة المكونات الموضحة في الموقع خارج ، تحتاج إلى إنشاء متغير منفصل والربط به ؛
- يناقش المقال الثاني حلول الجهة الخارجية. في هذه الحالة ، تحتاج إلى قضاء بعض الوقت ومعرفة كيفية استخدام هذه المكونات + ، في رأيي ، التبعيات في المشروع. وأنا أتولى هذا المنصب: كلما كان ذلك أبسط كان ذلك أفضل.
مرة أخرى ، لا أستطيع أن أعرف كل شيء ، وبالتالي ، إذا كان لديك ما تقوله أو تدوينه ، فأنا منفتح على النقد البناء. علاوة على ذلك ، سوف نستخدم وظائف قياسية حصرية للأدوات التي نستخدمها (Vue ، VueRouter ، Bootstrap Modal). لذلك ، أقرب إلى النقطة ...
سيكون هناك أشخاص يقولون: "من الأفضل توصيل تبعيات npm لـ modal بدلاً من سحب bootstrap + jquery بالكامل." أيها الرفاق ، لا أحد يزعجك من تكييف هذا الشيء كله مع احتياجاتك وأدواتك. الأدوات المذكورة أعلاه هي مجرد مثال للتنفيذ.
خيار العمل على الفور .
HTML<div id="app"> <nav> <router-link :to="{ name: 'modal' }" exact>Open Modal</router-link> </nav> <router-view></router-view> </div>
جافا سكريبت Vue.use(VueRouter) const Modal = { template: `<div class="modal fade" tabindex="-1" role="dialog" ref="modal"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title">Modal title</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body"> <p>Modal body text goes here.</p> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button> </div> </div> </div> </div> mounted: function(){ console.log('mounted') var context = this; $(this.$refs.modal).modal('show') $(this.$refs.modal).on('hidden.bs.modal', function(){ context.$router.go(-1); }) } } const routes = [ { path: '/modal', name: 'modal', component: Modal }, ] const router = new VueRouter({ routes, }) // New VueJS instance var app = new Vue({ // CSS selector of the root DOM element el: '#app', // Inject the router into the app router, })
في الواقع ، لا يوجد شيء معقد.
- عند النقر على الرابط الخاص بنا ، يتم تثبيت مكون Modal الخاص بنا.
- عند تثبيته ، نفتح نافذة الوسائط الخاصة بنا ومن خلال ذلك. $ Refs نتتبع إغلاقها.
- عندما يتم إغلاقه ، نرجع الشخص برمجياً خطوة إلى الوراء بحيث لا يتم تثبيت المكون الخاص بنا.
وبالتالي ، يعد هذا الأسلوب وهذه البنية حلاً جيدًا إذا كنت تخطط للحصول على العديد من الإطارات مشروطة مع منطق منفصل:
- التخصيص السهل.
- لا حاجة لتحميل تبعيات الطرف الثالث. بالنسبة لي شخصيا ، كلما كان ذلك أفضل ؛