AngularJS转换我的ng-href网址"斜线"进入"%2f"

时间:2014-07-17 22:19:15

标签: javascript angularjs url-routing

我有一个angularJS应用程序,它是一个库。对于每张图片,与之关联的是ng-href #/{{files.id}}

<a ng-href="#/{{files.id}}"...

但是,当我点击它时,最终显示的URL是

http://localhost:3000/gallery#%2F0

破坏了我的角度路由

when('/gallery/:imageID', { templateUrl: 'load_image.html' }).

有人可以向我解释如何正确编码网址吗?或者只使用不编码正斜杠的东西?

3 个答案:

答案 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
    });