CakePHP Ajax Pagination работает НО на любой другой вид? - Что я делаю неправильно? - PullRequest
1 голос
/ 20 июля 2011

Я настроил Ajax Pagination для сортировки записей. Это на самом деле работает, как и ожидалось, за исключением того, что:

1. При новой загрузке страницы: в столбце щелчка и сортировки отображается индикатор и сортируется, как и ожидалось.

2. Сортировка снова, и она обрабатывается как стандартный http-запрос. Результаты отсортированы, но не по Ajax.

3. Сортировка в 3-й раз, и Ajax снова работает и сортирует, как ожидалось.

Это каждый раз, когда Ajax, http, Ajax, http ...

Я не могу понять, почему он сбрасывает все остальные щелчки.

birds_controller.php

function index() {
    $birds = $this->paginate('Bird');
    $this->set(compact('birds', $birds));
}

index.ctp

<?php
$this->Paginator->options(array(
'update'      => '#birdTable',
'before'      => $this->Js->get('#busy-indicator')->effect('fadeIn', array('buffer'    => false)),
'complete'    => $this->Js->get('#busy-indicator')->effect('fadeOut',   array('buffer' => false)),
));
echo $this->Html->image('indicator.gif', array('id' => 'busy-indicator', 'style' => '    display: none;'));
?>

<div id="birdTable">
...

Ответы [ 2 ]

1 голос
/ 21 июля 2011

Я решил это, НО мне не нравится это решение. Это соответствует тому, что я изначально подозревал. Буфер не вызывал правильные данные, и поэтому я добавил:

echo $this->Js->writeBuffer();

в index.ctp, и теперь он работает как положено. Итак, у меня есть копия буфера, которая по-прежнему используется по умолчанию, а также для других сценариев ...

Не похоже, но, по крайней мере, сейчас это работает.

0 голосов
/ 20 июля 2011

Проблема, вероятно, заключается в том, что ссылки в возвращаемой таблице отличаются от исходных: исходные ссылки - AJAX, когда вы нажимаете на пагинацию, получаете новую таблицу со ссылками не-ajax. Проверьте с Firebug, что структура таблицы одинакова до и после клика. Если это не поможет опубликовать больше вашего кода, то здесь подходит представление разбивки на страницы.

Также не забудьте сделать $this->helpers['Paginator'] = array('ajax' => 'Ajax'); согласно http://book.cakephp.org/view/1234/AJAX-Pagination.

...