最近,在进行一个angularjs项目开发的时候,需要将url中的#符号去除掉,我希望借助java后台来实现此功能,但是,在快成功的时候,遇到一个很棘手的问题,耽误了两天,还没有很好的解决思路,希望大牛们能给些建议,谢谢,问题是这样的,我在appRoute.js的代码如下。
define(['app'], function(app){
return app.config(['$stateProvider','$urlRouterProvider','$locationProvider',
function($stateProvider,$urlRouterProvider,$locationProvider) {.state('testV2', {
url: '/testV2',
templateProvider: function() { return lazyDeferred.promise; },
controller: 'testV2Ctrl',
resolve: {
load: function($templateCache, $ocLazyLoad, $q, $http) {
lazyDeferred = $q.defer();
return $ocLazyLoad.load ({
name: 'app.testV2Ctrl',
files:['/webapp/js/controllers/testQuestion/testV2Ctrl.js']
}).then(function() {
return $http.get('js/views/testQuestion/testV2.html')
.success(function(data, status, headers, config) {
return lazyDeferred.resolve(data);
}).
error(function(data, status, headers, config) {
return lazyDeferred.resolve(data);
});
});
}
},
data: {
public: true
}
})
.......................
$locationProvider.html5Mode(true);
}])
当我把程序跑起来后,输入
http://localhost:8080/webapp/ap#/testV2后,我希望的到的效果是
http://localhost:8080/webapp/testV2,但是实际上变成了
http://localhost:8080/webapp/ap#%2FtestV2,且%2F始终无法去除,查阅了各种资料也无解,我想肯定是由于$locationProvider.html5Mode(true)引起的,我知道加上$urlRouterProvider.otherwise('testV2');会达到此效果,但是,毕竟,有好几个界面都需要路由过去,所以,我希望例如输入
http://localhost:8080/webapp/ap#/operationStatus输入后,就可以变成
http://localhost:8080/webapp/operationStatus并显示,而不依赖于$urlRouterProvider.otherwise
--
FROM 123.112.80.*