Laravel 5 + AngularJS html5Mode
Posted
技术标签:
【中文标题】Laravel 5 + AngularJS html5Mode【英文标题】: 【发布时间】:2015-08-21 16:14:27 【问题描述】:我正在使用 Laravel 5 和 AngularJS 开发一个项目。我要启用
$locationProvider.html5Mode(true);
并阻止页面重新加载。当我将其设置为 false 并访问链接时,该页面不会重新加载。
这是我的route.php
Route::get('/', function ()
return View::make('index');
);
角度代码
app.config(function($routeProvider, $locationProvider)
$routeProvider.when('/',
templateUrl: 'views/feed.html',
controller: 'fdController'
).when('/collections',
templateUrl : 'views/collections.html',
controller: 'clController'
).otherwise(
redirectTo : '/'
);
$locationProvider.html5Mode(true);
);
当我访问链接时html5Mode(false)
localhost:8000/#/ -> localhost:8000/#/feed
页面不刷新
当我和html5Mode(true)
访问时
localhost:8000/ -> localhost:8000/feed
,页面刷新,出现这个错误:
抱歉,找不到您要查找的页面。
【问题讨论】:
你能分享更多你的 Angular 代码吗?您的路线是如何配置的,如果您的链接中有诸如 target="_self" 之类的东西? PHP 端可能不是问题 我现在已经收录了 请更详细地解释问题。不清楚doesn't reload
是什么意思
嘿,你找到解决这个问题的方法了吗?
【参考方案1】:
我将我的 route.php 更改为
Route::get('/', function ()
return View::make('index');
);
Route::get('all', function ()
return View::make('index');
);
并在我的 index.php 中添加了一个基础 <base href="/">
现在一切正常,页面没有刷新。
【讨论】:
使用Route::get('all')
是一种非常危险的做法,它可能会导致一些细微的错误,例如请求一个javascript 文件并获取您的索引视图。您应该考虑改用App::missing
,因为这只会在尚未与已定义路由或资源匹配的路由上触发。
我读到 App::missing
在 laravel 5 中不可用
我认为在这种方法中您无法解决 404 错误页面。这个答案对我有一点改变:***.com/questions/16569841/…
这不是一个很好的解决方法。如果我有一个像 127.0.0.1/this/is/my/blog 这样的 AngularJS 路由,那么它将是 404...以上是关于Laravel 5 + AngularJS html5Mode的主要内容,如果未能解决你的问题,请参考以下文章
使用 Laravel 5.3 和 AngularJS 1.5 的路线行为不端
Laravel 5.1/AngularJS:在 Angular 视图中重置密码(如何验证 CSRF 令牌?)
Laravel 5 + AngularJS html5Mode