Saya mencoba membuat modal popup yang tidak bisa ditutup. Ini memiliki tombol yang akan membawa Anda ke halaman berikutnya dengan mengkliknya, tetapi saya tidak ingin pengguna dapat menutupnya.
Modal popup dapat ditutup dengan 3 cara:
- Mengklik tombol silang /
[X]
di sudut kanan atas - Menekan pelarian
- Klik pada overlay
Sejauh ini ini adalah modal JS saya dan saya pikir dengan clickableOverlay: false
saya sudah menangani yang ke-3:
require(
[ 'jquery', 'Magento_Ui/js/modal/modal' ],
function($, modal) {
$("#popup").modal({
autoOpen: true,
responsive: true,
clickableOverlay: false,
modalClass: 'modal-custom',
title: 'Popup',
buttons: [{
text: $.mage.__('Take me back to the homepage'),
class: 'action close-popup wide',
click: function () {
window.location.href = '/';
}
}]
});
}
);
MEMPERBARUI:
Saya juga mencoba mengatur modal dengan cara yang berbeda ketika mencoba solusi yang disediakan:
require(
[ 'jquery', 'Magento_Ui/js/modal/modal' ],
function($, modal) {
modal({
//options
}, $("#popup"));
}
);
magento2
javascript
magento-2.1
jquery
modal
7ochem
sumber
sumber
Jawaban:
Saya tidak bisa mendapatkan override
modal.closeModal()
fungsi untuk bekerja melalui mixin dan saya pikir melakukannya melalui mixin membuatnya menimpa seluruh situs web pada semua modals, yang tidak saya inginkan. Saya hanya membutuhkannya pada modal yang satu ini.Saya berakhir dengan hanya menghapus pemicu yang akan memanggil
modal.closeModal()
. Ada beberapa opsi modal lain yang dapat Anda gunakan untuk mencapai itu:opened
opsi / acara yang akan dipicu tepat setelah modal telah dibukakeyEventHandlers.escapeKey
opsiJadi ini kode terakhir saya:
sumber
Saya rasa menggunakan mixin dalam kasus itu akan relevan.
Anda dapat mencoba yang berikut ini:
Pertama di modul Anda, buat yang berikut ini
view/base/requirejs-config.js
:Kemudian buat
view/base/web/hook.js
:Dengan mixin ini, Anda mengganti implementasi
closeModal
metode dengan metode Anda sendiri. Dalam hal itu, pengembalian false akan menghindari penutupan modal.sumber
jQuery.mage.modal.closeModal
beri sayafunction() { return false; }
return false;
tidak cukup. Jujur saja, saya tidak terlalu nyaman dengan JS. Saya rasa Anda harus membaca artikel ini karena dapat membantu Anda mempersempit masalah atau menemukan cara lain untuk melakukannya: alanstorm.com/the-curious-case-of-magento-2-mixinscloseModal()
fungsi situs yang luas, yang tidak saya inginkan. Saya hanya ingin menerapkan ini pada modal tunggal ini