У меня есть представление с некоторыми открытыми фильтрами в блоке; он использует AJAX и функцию автоматической отправки, поэтому представление перезагружается при изменении параметра фильтра.
В небольшой задержке между выбором опции и перезагружаемым видом знакомый синий пульсирующий AJAX показывается где-то внизу формы (я думаю, где в данный момент находится скрытая кнопка отправки).
Я знаю, что могу настроить это изображение, переопределив CSS для элемента throbber, но я бы предпочел не использовать его вообще.
Что я бы предпочел сделать, так это временно скрыть открытую форму фильтра (и в идеале также и основной вид), используя анимацию jQuery. Затем они исчезнут после завершения вызова AJAX.
В противном случае я хотел бы использовать тот же метод, который используется модулем пользовательского интерфейса Views при обновлении, а именно поместить этот значок в середине страницы:
Поскольку это уже встроено, я просто предполагал, что где-то будет настройка для изменения стиля / местоположения этого поведения загрузки; нет такой удачи, хотя
Как мне реализовать любой из этих методов?
Я использую Drupal 7 с Views 7.x-3.3.
источник
Ответы:
Если вы не возражаете против использования небольшого количества jquery, вы всегда можете сделать что-то вроде:
источник
ajaxSend
иajaxComplete
может использоваться с условиемif (settings.url == '/views/ajax') {//... }
для большего контроля.ajaxSuccess
срабатывает только один раз; я думаю, потому что событие не автоматически связывается с замененным<div>
), но в остальном это идеально, не говоря уже о красиво простом , Большое спасибоДля полноты вот код, который я в конечном итоге использовал; он затеняет как открытую форму фильтра, так и представление, когда начинается загрузка AJAX, и возвращается обратно, когда завершает работу:
источник
Здравствуйте, я создал очень простой модуль, который дозирует именно то, что вы хотите сделать. Модуль имеет страницу конфигурации, где вы можете контролировать стиль пульсометра и даже загружать свои собственные изображения без какого-либо взлома.
Это ссылка на песочницу: http://drupal.org/sandbox/ANDiTKO/1556808
Если вы найдете это полезным, пожалуйста, покажите его здесь, чтобы он мог быть утвержден в качестве официального проекта: http://drupal.org/node/1556114
источник
Я только что провел исследование.
Это
throbber
жестко закодировано здесь в конструктореDrupal.views.ajaxView
.Экземпляр
Drupal.views.ajaxView
не хранится вDrupal.ajax
и есть@todo
о нем.Это означает, что мы не можем войти в объект и установить свои собственные параметры.
Как это работает?
Краткий ответ - CSS.
Страница администратора просмотров просто скрывает
throbber
и добавляет стиль своему родителю.ajax-progress-throbber
.Могу ли я что-то сделать с Drupal.ajax?
Да, я нашел несколько методов, которые вы можете перезаписать для элементов AJAX (кнопки, ссылки и т. Д.). Я показал здесь пример: как расширить или «зацепить» Drupal Form AJAX? , Но в этом случае все будет не так хорошо.
Элемент прогресса отображается на
beforeSend
этапе, так что вы можете сделать что-то, прежде чем это произойдет.источник
.throbber
и добавьте несколько стилей к.ajax-progress-throbber
.ajax-progress-throbber
когда вызывается любой AJAX? Должен признать, что я не заметил этого, но я проверю. И вы думаете, я смогу вызывать анимацию jQuery вbeforeSend
функции (основываясь на ответе на другой ваш вопрос)? Спасибо, я на самом деле не использую Views, и я не могу потрудиться копаться в каждом кусочке кода, чтобы узнать, что происходит! Я дам вам знать, как я справляюсь с этим.ajax-progress-throbber
применяют к ним класс в любой точке, поэтому ваш метод не будет работать. Спасибо за попытку, хотя