我有以下路线:
window.m.config( ['$routeProvider',($routeProvider) ->
$routeProvider
.when('/player/:index', {
templateUrl: 'view.html',
controller: 'View'
})
.when('/', {
templateUrl: 'list.html'
controller: 'List'
})
]
)
我的一些玩家名字中有/
。所以我正在解码它,例如,对于名为a/b
的玩家,该玩家的网址将是/player/a%2Fb
但是,当我执行以下操作时,哈希会在我加载应用程序时发生变化,因此它会变为/player/a/b
。
这使得该页面无法加载该特定播放器。
如果我在非角度应用程序中放入带有%2F
的哈希值,则%2F不会转换为/因此不是导致错误的浏览器。但是,如果我然后尝试获取哈希值,我仍然得到/player/a/b
,其中编码的斜杠是===到其他斜杠。
我应该如何处理路线变量值内的斜杠?
答案 0 :(得分:1)
答案 1 :(得分:0)
在创建路由参数时,我会用下划线替换/转义斜杠,然后在控制器中重新插入它们 - 这样就可以避免差异。
答案 2 :(得分:0)
所以我刚刚在github上发现了这个并希望提供一个临时修复,在我的应用程序中我注意到它只会路由双重编码的参数,例如我用它作为临时解决方法:
encodeURIComponent(encodeURIComponent("this/string/is/a/param/"))
这似乎对我有用。