javascript - Angular JS 'route' 与 %2F 的组件不匹配(编码 '/' )

标签 javascript html angularjs

我在 Angular JS 中有一个“路由”,如下所示

$routeProvider.when('/foos/:fooId', { controller: FooController, templateUrl: 'foo.html'});

它工作得很好,除非 :fooId 组件包含 '/' 或 '%2F'(编码形式)

我怎样才能让它工作,我的“fooId”可以包含/s?

最佳答案

你不能轻易做到这一点,因为如果你使用 %2F 的链接在其中,浏览器将为您解码它最终将成为 / . AngularJS 目前不允许你使用 /$route参数。

您可以对其进行双重编码,就像在这个 plnkr 中一样:http://plnkr.co/edit/e04UMNQWkLRtoVOfD9b9?p=preview

var app = angular.module('app', []);

app.controller('HomeCtrl', function ($scope, $route) {
});
app.controller('DirCtrl', function ($scope, $route) {
  var p = $route.current.params;

  $scope.path = decodeURIComponent(p.p1);
});

app.config(function ($routeProvider) {
    $routeProvider
            .when('/', {templateUrl: 'home.html', controller: 'HomeCtrl'})
        .when('/dir/:p1', {templateUrl: 'dir.html', controller: 'DirCtrl'})
            .otherwise({redirectTo: '/'});

});

链接将是:<a href="#/dir/a%252Fb%252Fc">click here</a> .

另一种选择,如果你有一组 /您可以在此处找到参数中的字符:How can I make the angular.js route the long path

关于javascript - Angular JS 'route' 与 %2F 的组件不匹配(编码 '/' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16630912/

相关文章:

javascript - 没有 Bootstrap 的 AngularJS 工具提示?

javascript - AngularJs - 带 Angular 的书签按钮

php - 在 JavaScript 中导出变量

c# - ASP.NET 从 anchor 获取以 px 为单位的文本位置

javascript - 遍历项目并向其添加处理程序会影响性能

javascript - 首次登录时的 React-Native 欢迎屏幕

c# - 从 .net 创建 pdf 的工具?

javascript - 如何在 JavaScript 中将 className 添加到 div 标签?

javascript - angularjs,ui-router访问状态url开头的参数

javascript - element.sortable 不是一个函数 Angular