Angularjs 无法使用 $routeParams 从 URL 编码的 URL 中读取参数
Angularjs unable to read params from a URLencoded URL using $routeParams
我在我的应用程序中配置了这样的路由:
$routeProvider
.when('/', {action: 'account_landing_page'})
.when('/:resource/:id/:extrajson', {action: 'open_resource'})
.when('/:resource/:id', {action: 'open_resource'})
.otherwise({redirectTo: '/'})
如果 url 包含 :extrajson
,我希望能够执行不同的操作。所以我有这个 URL :
xyz/dashboard/1/%7B%22screen_shot_mode%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 用法的视频。 https://www.youtube.com/watch?v=ziUelciLL5Q
我在我的应用程序中配置了这样的路由:
$routeProvider
.when('/', {action: 'account_landing_page'})
.when('/:resource/:id/:extrajson', {action: 'open_resource'})
.when('/:resource/:id', {action: 'open_resource'})
.otherwise({redirectTo: '/'})
如果 url 包含 :extrajson
,我希望能够执行不同的操作。所以我有这个 URL :
xyz/dashboard/1/%7B%22screen_shot_mode%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 用法的视频。 https://www.youtube.com/watch?v=ziUelciLL5Q