Angularjs无法使用$routeParams从URL编码的URL读取参数

Angularjs无法使用$routeParams从URL编码的URL读取参数,angularjs,angular-routing,Angularjs,Angular Routing,我已经在我的应用程序中配置了如下路由: $routeProvider .when('/', {action: 'account_landing_page'}) .when('/:resource/:id/:extrajson', {action: 'open_resource'}) .when('/:resource/:id', {action: 'open_resource'}) .otherwise({redirectTo: '/'}) 如果url包含:ex

我已经在我的应用程序中配置了如下路由:

$routeProvider
    .when('/', {action: 'account_landing_page'})
    .when('/:resource/:id/:extrajson', {action: 'open_resource'})
    .when('/:resource/:id', {action: 'open_resource'})
    .otherwise({redirectTo: '/'})
如果url包含:extrajson,我希望能够执行不同的操作。所以我有一个网址: xyz/仪表板/1/%7B%22屏幕截图模式%22%3A%20%22on%22%7D

加载此URL时,它将丢失所有URL编码的额外参数,并成为: xyz//dashboard/1

谁能告诉我我做错了什么?
有人能解释一下为什么会这样吗?

这些参数是URL路径的一部分。因此它将/:resource/:id/:extrajson与/foo/bar/baz匹配,其中$routeParams被解析为:

{
  "resource": "foo",
  "id": "bar",
  "extrajson": "baz"
}

下面是一些可能有助于您理解的代码片段

  when('/search/:someid', {
    templateUrl: 'partials/qviewplaceholder.html',
    controller: 'Myctrl as somectrl'
  }).
注意:someid部分。在控制器的下面会看到这个

app.controller('Myctrl', ['$routeParams',function($routeParams) {
this.somedata = $routeParams.someid;
/*controller logic that uses $routeParams.someid for it's logic*/
}]);

现在您有了一个模板[partials/qviewplaceholder.html]和一个通过$routeParams传入的变量。$routeParams变量通常是可以用来指向某个对象的某个id。然后相应地显示数据。另外,这里有一个视频演示了$routeparams的使用

你应该将内容作为搜索参数传递,我认为浏览器不支持将其作为有效路径扫描你能告诉我参数丢失的原因吗?就像我在之前的评论中所说的,我猜你传递的字符串不是有效的url路径,因此它们被剥离了。你能告诉我参数丢失的原因吗?