[英]AngularJS and Spring MVC Project remove '#!'
我正在一个项目中,该项目使用AngularJS作为前端,并使用Spring MVC作为后端。 我也使用了插件ui-router
。 基本网址看起来像localhost:8080/PROJECT_NAME/#!
为了更好看,我正在尝试从网址中删除/#!/
。
我无法从互联网的通用解决方案中获得正确的结果:
// Insert this into Angularjs module config file
$locationProvider.html5Mode(true);
// Add this into META tag
<base href="/">
完成此操作后,我得到的是所有资源都崩溃了,所以我添加了项目名称:
<base href="PROJECT_NAME">
资源已正确获取,但是,日志显示:
Uncaught Error: [$injector:modulerr] Failed to instantiate module app due to:
(anonymous function) @ angular.js:68
(anonymous function) @ angular.js:4756
forEach @ angular.js:357
loadModules @ angular.js:4717
createInjector @ angular.js:4639
doBootstrap @ angular.js:1838
angular.resumeBootstrap @ angular.js:1867
maybeBootstrap @ hint.js:569
我不知道下一步该怎么做,可能需要您的帮助,谢谢!
路由器代码:
app.config(
function ($stateProvider, $urlRouterProvider){
$urlRouterProvider.otherwise("/");
$stateProvider
.state('index', {
url: "/",
templateUrl: "homeview"
});
// use the HTML5 History API
$locationProvider.html5Mode(true);
}
);
[1]使用下面提到的代码将html5Mode设置为true,
.config(["$locationProvider", function($locationProvider) {
$locationProvider.hashPrefix('');
$locationProvider.html5Mode(true);
}])
[2]在index.html中设置基本网址,如下所示:
<base href="/" />
[3]创建一个控制器以将url重定向到索引文件
@RequestMapping(value = "/{[path:[^\\.]*}")
public String stalklist() {
return "forward:/";
}
#
通知AngularJS不需要去该URL的服务器,而去ng-router
。
因此,理想情况下,您不应该删除该内容。
使用$ locationProvider模块并将html5Mode设置为true 。
angular.module('StudentView', []).
config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
$routeProvider.
when('/student', {templateUrl: 'partials/studentList.html', controller: StudentListCtrl}).
when('/student/:studentId', {templateUrl: 'partials/studentDetail.html', controller: StudentDetailCtrl}).
otherwise({redirectTo: '/phones'});
$locationProvider.html5Mode(true);
}]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.