2017-12-27 223 views
0

這可能是一個愚蠢的問題,因爲我是Laravel的新手。我正在使用angular和laravel來製作單頁應用程序。我試圖從「todos」表中獲取所有記錄,並將它們顯示在todo.html上點擊「查看所有待辦事項」按鈕。 「查看所有Todos」轉到「localhost:8000/tasks」URL。當我點擊那個按鈕時,我得到了所有的待辦事項沒有問題。但是當我嘗試直接在瀏覽器上訪問該URL時,我從laravel Todocontroller獲得了json數組。Laravel和AngularJs SPA訪問直接URL時出錯

這裏是我的路線/ web.php

Route::resource('/todo', 'TodoController'); 

Laravel TodoController控制器

public function index() 
{ 
    return Todo::all(); 
} 

這裏是我的角碼

myApp.config(['$routeProvider', '$locationProvider', 

function ($routeProvider, $locationProvider) { 
    $locationProvider.hashPrefix(''); 

    $routeProvider.when('/', { 
     templateUrl: 'views/home.html', 
    }); 
    $routeProvider.when('/todo', { 
     templateUrl: 'views/todo.html', 
     controller: 'todoController' 
    }); 
    $locationProvider.html5Mode(true); 

}]); 

myApp.controller('taskController', function($scope, $http) { 
$http({ 
    method: 'get', 
    url: 'todo' 
}).then(function (response) { 
    $scope.about = response.data 
},function (error){ 
    console.log(error, 'can not get data.'); 
}); 
}); 

回答

0

你知道你還可以返回雄辯集合從你的路線或控制器?他們將自動轉換爲JSON。試一試!

https://laravel.com/docs/5.5/responses

如果你想返回HTML,在你的控制器

public function index() 
{ 
    return view('todos')->with('todos',Todo::all()); 

} 

https://laravel.com/docs/5.5/views

+0

感謝您的回覆。但目的不是返回json數組。我想顯示和HTML頁面包含所有待辦事項而不是JSON數組的HTML表格 – Aamish

+0

所以你必須使用一個視圖https://laravel.com/docs/5.5/views –

0

您從您的角度控制器,以及你的Laravel控制器針對同一網址中使用的視圖。您應該使用Laravel作爲API或服務,而您允許角度做路由。檢查這個更多的信息。 Laravel API routes

+0

你的意思是我必須提到所有的API路線。 PHP的? – Aamish

+0

我的意思是你的laravel路線,你可以有一個前綴可以說_api_所以你的laravel路線有_yourdomain.com/api/task_和角度控制器可以有_yourdomain.com/task_。那樣,你有更清晰的。 –

+0

是的,我明白了。謝謝。但是,如果我直接在瀏覽器中訪問yourdomain.com/api/task,那麼我仍然會得到json響應。有沒有辦法直接從角度路線訪問laravel控制器? – Aamish