Как изменить поведение загрузки ajax в представлениях?

У меня есть представление с некоторыми открытыми фильтрами в блоке; он использует AJAX и функцию автоматического отправки, поэтому просмотр повторно загружается, как только изменяется параметр фильтра.

В короткой задержке между выбором опции и повторным загрузкой просмотра синяя диаграмма AJAX показана где-то внизу формы (я думаю, где находится скрытая кнопка отправки).

Я знаю, что могу настроить этот образ, переопределив CSS для элемента throbber, но я бы предпочел не использовать его вообще.

То, что я бы скорее предпочел, - это временно угасить открытую форму фильтра (и, в идеале, основной вид), используя анимацию jQuery. Затем они исчезнут, когда вызов AJAX будет завершен.

В противном случае я хотел бы использовать тот же метод, который использует модуль пользовательского интерфейса Views при его обновлении, а именно размещение этого значка в середине страницы:

введите описание изображения здесь>> </p>

<p> Как уже было построено, я просто предположил, что будет где-то менять стиль /расположение этого поведения загрузки; нет такой удачи, хотя. </p>

<p> Как реализовать любой из этих методов? </p>

<p> Я использую Drupal 7 с Views 7.x-3.3. </p></div>
				<div class= 7 views ajax javascript

34 голоса | спросил Clive 16 Mayam12 2012, 03:57:28

4 ответа


43

Если вы не против использования небольшого jquery, вы всегда можете сделать что-то вроде:

$ ( '# вид-идентификатор'). AjaxStart (функция () {
   $ ('# view-filters-id'). fadeTo (300, 0.5);
});
$ ( '# Вид-идентификатор'). AjaxSuccess (функция () {
   $ ('# view-filters-id'). fadeTo (300, 1.0);
});
ответил Chance G 19 Mayam12 2012, 01:32:06
28

Для полноты кода здесь я использовал; он исчезает как открытая форма фильтра, так и вид, когда начинается загрузка AJAX, и снова при завершении:

(функция ($) {
  Drupal.behaviors.events = {
    attach: функция (контекст, настройки) {
      $ ('# views-exposure-form-events-page', context) .ajaxStart (function () {
        $ ('# views-exposure-form-events-page, div.view-id-events', context) .fadeTo (300, 0.5);
      });
      $ ('# views-exposure-form-events-page', context) .ajaxSuccess (function () {
         $ ('# views-exposure-form-events-page', context) .fadeTo (300, 1.0);
         $ ('div.view-id-events', context) .css ('opacity', 0.5) .fadeTo (300, 1.0);
      });
    }
  };
}) (Jquery);
ответил Clive 19 Maypm12 2012, 15:47:00
10

Здравствуйте, я создал очень простой модуль, который дозирует то, что вы хотите сделать. Модуль имеет страницу конфигурации, где вы можете управлять стилем пульсации и даже загружать собственные изображения без каких-либо взломов.

Это песочница: http://drupal.org/sandbox/ANDiTKO/1556808

Если вы сочтете это полезным, пожалуйста, сообщите об этом здесь, чтобы его можно было утвердить в качестве официального проекта: http://drupal.org/node/1556114

ответил ANDiTKO 24 Maypm12 2012, 22:51:35
6

Я только что сделал исследование.
throbber жестко закодирован здесь в конструкторе Drupal.views.ajaxView.
Экземпляр Drupal.views.ajaxView не сохраняется в Drupal.ajax и есть @todo об этом.
Это означает, что мы не можем войти в объект и установить свои собственные параметры.

Как его видет?

Короткий ответ - CSS.
Просмотров admin страница просто скрывает throbber и добавляет стиль к родительскому .ajax-progress-throbber.

.ajax-progress-throbber {
  background-color: # 232323;
  background-image: url ("../images /load-small.gif");
  background-position: центр;
  background-repeat: no-repeat;
  -moz-border-radius: 7px;
  -webkit-border-radius: 7px;
  border-radius: 7px;
  высота: 24px;
  непрозрачность: .9;
  padding: 4px;
  ширина: 24px;
}

Можно ли что-то сделать с Drupal.ajax?

Да, я нашел некоторые методы, которые вы можете перезаписать для элементов AJAX (кнопки, ссылки и т. д.). Здесь я привел пример: Как продлить или «открыть» форму «Drupal Form AJAX» . Но в этом случае это будет не так хорошо. Элемент Progress отображается на этапе beforeSend, поэтому вы можете что-то сделать, прежде чем это произойдет.

ответил kalabro 18 Maypm12 2012, 18:10:34

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132