我從頭開始構建我的第一個lavavel網站,並且遇到了幾條路線的行爲問題。Laravel與PJAX的路由行爲不像預期的那樣
這裏是我的路線相關的代碼文件:
Route::get('work', '[email protected]');
Route::get('work/{item}', '[email protected]');
這裏是相關方法:
public function work() {
return view('pages.work');
}
public function workitem($item) {
$v = 'work.'.$item;
if(view()->exists($v)) {
return view($v);
} else {
return view('errors.noitem');
}
}
,這裏是我的觀點的相關部分:
@extends('layout')
@section('content')
...
<div class="workflex">
<a class="workitem" href="/work/test"></a>
<a class="workitem" href="/work/test2"></a>
</div>
<div id="loadContent" class="loadContent">
@yield('insert')
</div>
...
@stop
值得一提的是,我打算使用PJAX加載單個工作項目頁面。我有意見認爲,PJAX加載到「插入」部分基於URL:
$(document).pjax('a.workitem', '#loadContent');
用戶加載初始工作頁面的/工作子目錄,然後點擊一個按鈕加載/工作/項目頁與PJAX。如路線所示,我還希望用戶能夠在URL中輸入工作項目並將其定向到已加載該項目的工作頁面。這整個系統表現爲預期的...直到我增加了以下jQuery來work.blade.php:
$(document).ready(function() {
$('#loadContent').load("/work/init", function() {
myFade('#loadContent > *', 1); //ignore this function, it's an animation irrelevant to my problem
});
});
這是在這裏爲試圖加載初始消息PJAX裝載DIV #loadContent裏面告訴用戶選擇一個工作項目。然而,這樣做的副作用是,現在無論何時直接瀏覽到/ work/item(PJAX仍然正確加載頁面),該文檔都會觸發此jquery,並且該消息會覆蓋頁面內容。
我是集思廣益的方式,允許我的控制器中的work()方法觸發加載此腳本或僅將工作/ init視圖傳遞到「插入」部分的內容。
您認爲最好的解決方法是什麼?非常感謝您的回答。