Ich habe eine Ansicht mit einigen herausgestellten Filtern in einem Block; Es verwendet AJAX und die Funktion zum automatischen Senden, sodass die Ansicht erneut geladen wird, sobald eine Filteroption geändert wird.
In der kurzen Zeitspanne zwischen der Auswahl einer Option und dem erneuten Laden der Ansicht wird der vertraute blaue AJAX-Throbber irgendwo unten im Formular angezeigt (ich denke, wo sich derzeit die versteckte Schaltfläche zum Senden befindet).
Ich weiß, dass ich dieses Bild anpassen kann, indem ich das CSS für das throbber-Element überschreibe, aber ich würde es vorziehen, es überhaupt nicht zu verwenden.
Am liebsten würde ich die belichtete Filterform (und im Idealfall auch die Hauptansicht) mithilfe einer jQuery-Animation vorübergehend ausblenden. Sie werden dann wieder eingeblendet, wenn der AJAX-Aufruf abgeschlossen ist.
Andernfalls würde ich gerne die gleiche Methode verwenden, die das Ansichten-UI-Modul beim Aktualisieren verwendet, nämlich dieses Symbol in der Mitte der Seite zu platzieren:
Da dies bereits eingebaut ist, habe ich nur angenommen, dass es irgendwo eine Einstellung geben würde, um den Stil / die Position dieses Ladeverhaltens zu ändern. aber kein solches Glück.
Wie implementiere ich eine dieser Methoden?
Ich verwende Drupal 7 mit Views 7.x-3.3.
quelle
Antworten:
Wenn es Ihnen nichts ausmacht, ein wenig jquery zu benutzen, können Sie immer etwas tun wie:
quelle
ajaxSend
undajaxComplete
mit Bedingungif (settings.url == '/views/ajax') {//... }
für mehr Kontrolle verwendet werden können.ajaxSuccess
nur einmal ausgelöst; ich schätze, weil das Ereignis nicht automatisch an das ersetzte gebunden wird<div>
), aber ansonsten ist dies perfekt, ganz zu schweigen von der schönen Einfachheit . Vielen DankDer Vollständigkeit halber hier der Code, den ich letztendlich benutzt habe; Es blendet sowohl die belichtete Filterform als auch die Ansicht aus, wenn das AJAX-Laden beginnt, und wieder ein, wenn es beendet ist:
quelle
Hallo, ich habe ein sehr einfaches Modul erstellt, das genau das dosiert, was Sie tun möchten. Das Modul verfügt über eine Konfigurationsseite, auf der Sie den Stil des Throbbers steuern und sogar Ihre eigenen Bilder hochladen können, ohne hacken zu müssen.
Dies ist der Sandbox-Link: http://drupal.org/sandbox/ANDiTKO/1556808
Wenn Sie es nützlich finden, lesen Sie es bitte hier, damit es als offizielles Projekt genehmigt werden kann: http://drupal.org/node/1556114
quelle
Ich habe gerade recherchiert.
Das
throbber
ist hier im Konstruktor von hardcodiertDrupal.views.ajaxView
.Eine Instanz von
Drupal.views.ajaxView
wird nicht in gespeichertDrupal.ajax
und es gibt@todo
darüber.Es bedeutet, dass wir nicht in das Objekt hineingehen und unsere eigenen Parameter einstellen können.
Wie funktioniert Views?
Die kurze Antwort lautet CSS.
Die Ansichten-Administratorseite wird nur ausgeblendet
throbber
und dem übergeordneten Element ein Stil hinzugefügt.ajax-progress-throbber
.Kann ich etwas mit Drupal.ajax machen?
Ja, ich habe einige Methoden gefunden, die Sie für AJAX-Elemente überschreiben können (Schaltflächen, Links usw.). Ich habe hier ein Beispiel gezeigt: Wie kann man Drupal Form AJAX erweitern oder "einbinden"? . Aber in diesem Fall wird es nicht so gut sein.
Das Fortschrittselement wird in der
beforeSend
Phase angezeigt, sodass Sie etwas tun können, bevor es passiert.quelle
.throbber
und ein paar Styles hinzufügen.ajax-progress-throbber
.ajax-progress-throbber
wann AJAX aufgerufen wird? Ich muss zugeben, dass ich das nicht bemerkt habe, aber ich werde es überprüfen. Und Sie glauben, ich kann jQuery-Animation in einerbeforeSend
Funktion aufrufen (basierend auf der Antwort auf Ihre andere Frage)? Danke, ich benutze Views nicht wirklich und ich kann mich nicht die Mühe machen, mich in jeden Code zu vertiefen, um herauszufinden, was passiert! Ich werde Sie wissen lassen, wie es mir gelingt, das zu versuchen.ajax-progress-throbber
Klasse zu irgendeinem Zeitpunkt angewendet, sodass Ihre Methode nicht funktioniert. Vielen Dank für den Versuch