непременное условие
У меня есть 2 пользовательских виджета, расширяющих один родительский виджет.
- Родительский виджет:
Magento_ConfigurableProduct/js/configurable
- Первый пользовательский виджет:
Vendor_AModule/js/configurable
- Второй пользовательский виджет:
Vendor_BModule/js/configurable
Первый пользовательский виджет require-config.js
:
var config = {
map: {
'*': {
configurable: 'Vendor_AModule/js/configurable'
}
}
};
Первый Пользовательский Виджет JS:
define([
'jquery',
'mage/translate',
'Magento_ConfigurableProduct/js/configurable'
], function ($) {
$.widget('vendor.configurable_awidget', $.mage.configurable, {
/**
* {@inheritDoc}
*/
_configureElement: function (element) {
this._super(element);
alert('Custom widget A is triggered!');
}
});
return $.vendor.configurable_awidget;
});
Второй пользовательский виджет require-config.js
:
var config = {
map: {
'*': {
configurable: 'Vendor_BModule/js/configurable'
}
}
};
Второй пользовательский виджет JS:
define([
'jquery',
'mage/translate',
'Magento_ConfigurableProduct/js/configurable'
], function ($) {
$.widget('vendor.configurable_bwidget', $.mage.configurable, {
/**
* {@inheritDoc}
*/
_configureElement: function (element) {
this._super(element);
alert('Custom widget B is triggered!');
}
});
return $.vendor.configurable_bwidget;
});
Действия по воспроизведению
Я открываю настраиваемую страницу веб-интерфейса продукта.
ожидаемый результат
Я вижу и то, Custom widget B is triggered!
и другое Custom widget A is triggered!
.
Фактический результат
Я вижу только Custom widget B is triggered!
предупреждение.
Вопрос
Каким должен быть код, чтобы на настраиваемой странице внешнего интерфейса отображались оповещения обоих виджетов?
источник
mixin
AWidget
в вашем коде, как подать заявкуBWidget
?BWidget
будет реализован так же, какAWidget
.Убедитесь, что пользовательский модуль загружен после других
module.xml
Мы можем проверить
app/etc/config.php
. Ваш пользовательский модуль должен быть «более низкого уровня», чем другие.Мы можем удалить пользовательский модуль из
setup_module
таблицы. А затем снова запустите команду setup upgrade, чтобы изменить порядок последовательности модулей.Мы должны убедиться, что пользовательский JS "ниже уровня", чем другие в
requirejs-config.js
.PUB / статический / _requirejs / интерфейс / Magento / яркостный / en_US / requirejs-config.js
Объявить модуль B
Потому что виджет A уже «переопределен» по умолчанию для виджета Magento. Итак, в модуле B нам нужно загрузить виджет A и «переопределить» его .
Приложение / код / Vendor / BModule / просмотр / интерфейс / requirejs-config.js
Приложение / код / Vendor / BModule / вид / интерфейс / веб / JS / configurable.js
В конце концов, нам нужно снова запустить развертывание статического контента.
Мы можем прочитать больше здесь: https://learn.jquery.com/jquery-ui/widget-factory/extending-widgets/#using-_super-and-_superapply-to-access-parents
источник