Ich muss ein Javascript aus dem neuen UI-Modul erweitern, das das neue Admin-Grid-System enthält. Erweitern Sie eine Standard-UI-Komponente. Geben Sie mir einen Hinweis, und ich konnte Code einrichten:
# file: app/code/My/Module/view/adminhtml/web/js/gid/massactions.js
console.log('new massactions.js');
define([
'Magento_Ui/js/grid/massactions'
], function (massactions) {
console.log('before extend');
return massactions.extend({
defaultCallback: function (action, data) {
console.log('custom callback');
}
});
});
Wie Sie sehen können, habe ich drei console.log
, aber die defaultCallback
eine wird nicht aufgerufen, sodass die Methode nicht wie erwartet überschrieben wird, aber ich kann sicher sein, dass die Definition geladen wurde.
Um fair zu sein, möchte ich einer neuen Aktion, die ich hinzugefügt habe, einen benutzerdefinierten Rückruf hinzufügen. Im Original massactions.js
haben wir einen _getCallback
, der versucht, einen Rückruf für ein Massaktionselement zu erhalten (Fallback auf defaultCallback, den ich überschreiben möchte), aber ich konnte dort keinen Rückruf hinzufügen, selbst wenn view/ui_component/sales_order_grid.xml
.
Jede Hilfe wird sehr geschätzt.
Update 1 : Ich kann die Methode mit überschreiben massactions.prototype.defaultCallback = function(){}
. Ich bin mir nicht sicher, ob dies einen Nebeneffekt hat, daher lasse ich die Frage offen.
quelle
massactions.prototype.defaultCallback = function
. Was fehlt mir in diesem Fall ohne Verwendungextend
?Antworten:
Sieht aus wie auf Github beantwortet . Kopie / Vergangenheit hier
Sie können die 'Mixins'-Funktion ausprobieren. Sie müssen lediglich das requireJS-Modul mit einer erweiterten Methode wie der folgenden erstellen:
default_mixin.js:
requirejs-config.js:
quelle
Ich bin nicht sicher, was Sie wollen, aber Sie können meine Lösung verwenden. Ich benutze Mixins.
quelle