我有一个angularJS应用程序,它是一个库。对于每张图片,与之关联的是ng-href
#/{{files.id}}
。
<a ng-href="#/{{files.id}}"...
但是,当我点击它时,最终显示的URL是
http://localhost:3000/gallery#%2F0
破坏了我的角度路由
when('/gallery/:imageID', {
templateUrl: 'load_image.html'
}).
有人可以向我解释如何正确编码网址吗?或者只使用不编码正斜杠的东西?
答案 0 :(得分:13)
由于aa077e8,用于$ location hash-bang网址的默认哈希前缀已从空字符串('')更改为bang('!')。
你应该试试这个。
的index.html
<li class="active"><a href="#/">Home</a></li>
<li><a href="#/about">About</a></li>
app.js
angular.module('appRoutes',['ngRoute'])
.config(function($routeProvider, $locationProvider){
$locationProvider.hashPrefix('');
$routeProvider
.when('/',{
templateUrl:'app/views/pages/home.html'
})
.when('/about',{
templateUrl:'app/views/pages/about.html'
});
});
答案 1 :(得分:7)
有两种解决方案:
不推荐:添加!你的主播:
默认哈希爆炸已从“”更改为“!”在角度,因为它不会改变你可以简单地养成添加“#!”的习惯。在你的锚标签而不是“#”。
推荐:使用$ locationProvider:
使用
$ location.hashPrefix( “”)
在你的模块配置中使用空字符串作为哈希爆炸就像过去一样!!
答案 2 :(得分:2)
哟不需要在这里编码。 只需在您的路径Param中添加*,如下所述,并启用html5Mode
app.config(function ($routeProvider) {
$routeProvider
.when('/home', {templateUrl: 'home.html', controller: 'HomeCtrl'})
.when('/base/:path*', {templateUrl: 'path.html', controller: 'pathCtrl'})
.otherwise({redirectTo: '/home'});
});
$locationProvider.html5Mode({
enabled: true,
requireBase: false
});