So implementieren Sie das Loader-Widget in Magento2


9

Ich möchte das Loader-Widget in Magento 2 implementieren. In meinem Formular habe ich eine Schaltfläche platziert

<div style="display:inline; float:right;  width:100%; margin-bottom:5px;">
    <button style="" class="scalable go" type="submit" id="button1"><span>Do some action</span></button>
</div>

Wenn ich auf diese Schaltfläche klicke, möchte ich die URL (frontName / Controller / Action) aufrufen. Während dieser Aktion möchte ich das Loader-Widget anzeigen.


1
Die Widget-Initialisierung wird in M2 devdocs beschrieben: devdocs.magento.com/guides/v2.0/frontend-dev-guide/javascript/…
Alex

Antworten:


31

Es ist beeindruckend einfach, wenn es in einer JS-Datei verwendet wird, die über Require JS geladen wurde (Alle / die meisten Ihrer Skripte sollten so sein, dass ich darauf nicht näher eingehen werde):

 $('body').trigger('processStart');

Und um es zu entfernen

$('body').trigger('processStop');

Ergebnis:

Geben Sie hier die Bildbeschreibung ein


17

Magento2 hat ein Loader-Widget .

Einfache Verwendung mit Ajax-Anfrage.

$.ajax({
    ...// ajax setting,
    showLoader: true, // enable loader
    context: jqueryElementorSelector // element that will be coverer by loader, default body, optional
}).than(...)

Sie können es auch selbst verwenden

<div data-role="pannel" data-mage-init='{"loader": {}}'>
     content
</div>

und in JS

$('[data-role="pannel"]').trigger('show.loader'); // or .mage('loader', 'show')
....
$('[data-role="pannel"]').trigger('hide.loader'); 

1
Ich benutze showLoader: true innerhalb der $.ajaxEinstellung. Ich erhalte die folgende Fehlermeldung in der Konsole: loader.js:210 Expected to start loader but did not find one in the domIrgendeine Idee, warum dies sein könnte? Muss ich dem DOM manuell ein Loader-Element hinzufügen? Ich verwende ein benutzerdefiniertes Design. Vielleicht habe ich einen Block entfernt, der den Standardlader enthält.
Shawn Northrop


0

Eine einfache Möglichkeit, das Ladesymbol in Magento mithilfe des Skripts anzuzeigen:

So zeigen Sie den Lader an:

jQuery('body').loader('show');

oder verwenden:

var body = $('body').loader();
body.loader('show');

oder

$('body').trigger('processStart');

So verstecken Sie den Lader:

var body = $('body').loader();
body.loader('hide');

ODER

jQuery('body').loader('hide');

ODER

jQuery('body').loader('destroy');

ODER

var body = $('body').loader();
body.loader('destroy');

ODER

$('body').trigger('processStop');
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.