Yii2 listview缺少來自yii1的$ .fn.yiilistview.update。更重要的是,它依賴於pjax的基本要求,因此創建了所有與嵌套的pjax,超時等問題,以簡單分頁與listView。yii2 listview next page without url
對控制器的GET請求由javascript呈現爲HTML(從包含listview html的控制器返回的jSON)。由於URL在這個過程中沒有改變,我沒有使用pjax來避免複雜性,並且簡單的調用了ajax,並且基於成功返回的數據將更新容器。 (就像pjax隻手動使用ajax而不改變url)
現在當我做下一頁時,URL更新並且頁面完全刷新。最初它沒有工作,但一旦我添加了一個頁面GET參數內部控制器的IF檢查,而不是返回JSON的renderAjax輸出,現在直接返回HTML
我們如何避免更新網址與yii2 listview下一頁沒有使用pjax,並使它看起來像控制器和javascript寫入時尚模仿pjax手動ajax調用上面所述?
控制器:
if($pageParam == null) {
$page = $this->renderAjax("_list", [
"dataProvider" => $dataProvider
]) ;
Yii::$app->response->format = 'json';
return array("error"=>false,"page"=>$page);
} else {
return $this->renderAjax("_list", [
"dataProvider" => $dataProvider
]) ;
}
列表查看:
<?php if($dataProvider != null) : ?>
<?=
ListView::widget([
'id'=>'itemList',
'dataProvider' => $dataProvider,
'itemOptions' => ['class' => 'item'],
'itemView' => '_dataListView',
'summary'=>'',
'emptyText'=>$emptyPage
])
?>
<?php endif; ?>
JS:
阿賈克斯成功GET回調:
success : function(data) {
if(!data.error) {
$("#list-container").html(data.page);
listcontainer本身存在於父視圖_list
我在PHP中試過這些。但是我在這裏遇到了一個問題,因爲我正在將renderAjax的輸出返回到用這個輸出替換容器的javascript。 pjax調用在ajax中無法正常工作,但是完全刷新我同意在PHP中執行操作可能不會產生任何問題 – fortm
當我根本不需要pjax,因爲URL不需要更改時,最好的情況就是這樣。但似乎yii2與pjax有深厚的聯繫,我們需要找到解決方法 – fortm
我最近與pjax和yii listview進行的鬥爭是在listview中的尋呼機,一旦以我回答的方式實現(即使用js添加pjax),添加無限滾動在頂部一直沒有工作(當在同一頁上的多個列表視圖 - 基於AJAX)。我正在刪除需要無限滾動的pjax調用,因爲它執行類似於pjax的操作 - 它也需要容器,並附加在替換容器內容的地方。 – fortm