我希望在从其他网站获取凭据后,更改我的angularJS应用程序中的网址。
我正在设置我的应用
angular.module('demoApp', [])
.config(function ($routeProvider, $locationProvider) {
$routeProvider
.when('/', {
templateUrl: 'views/main.html',
controller: 'MainCtrl'
})
.when('/example', {
templateUrl: 'views/example.html',
controller: 'ExampleCtrl'
})
.otherwise({
redirectTo: '/'
});
$locationProvider.html5Mode(true);
})
在我的MainCtrl控制器中,我改变了这样的URL:
$location.url($location.path()); // to remove url query params
$location.path('/example'); // to change the url
但是当我刷新页面时,这个原因无法获取/示例。
有解决方法吗?
感谢您的帮助。
答案 0 :(得分:0)
当您激活HTML5模式时,您没有处理所需的URL重写(实际上,/ example url不存在,现在唯一有角度的现有URL是index.html)
所以你必须处理URL重写服务器端..例如对于.htaccess
文件中的apache:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule !\.\w+$ index.html [L]
</IfModule>
或者如果您使用的是grunt-connect
:
connect: {
dev: {
options: {
port: 9002,
hostname: '*',
middleware: function(connect) {
return [
//modRewrite is used to handle properly angularjs' html5 mode
modRewrite(['^[^\\.]*$ /index.html [L]']),
lrSnippet,
folderMount(connect, '/app')
];
}
}
}
}
还有一件事,小心点,你正在进行双重位置变更。如果你想删除查询参数,我会劝你这样做:
$location.path(url);
// clear any query params
$location.$$search = {};
$location.$$compose();