Javascript 角度$routeParams:以数组形式获取查询参数
当查询中有多个Javascript 角度$routeParams:以数组形式获取查询参数,javascript,angularjs,controller,angular-routing,query-parameters,Javascript,Angularjs,Controller,Angular Routing,Query Parameters,当查询中有多个id参数时,$routeParams.id会给我一个数组。 太好了。但是,如果查询中只存在一个id,我会得到一个字符串 /?id=12&id=34&id=56 // $routeParams.id = ["12", "34", "56"] /?id=12 // $routeParams.id = "12" 这很糟糕。因为在第一种情况下,$routeParams.id[0]给出了“12”, 而在第二个字符中,它给出了“1”(“12
id
参数时,$routeParams.id
会给我一个数组。
太好了。但是,如果查询中只存在一个id
,我会得到一个字符串
/?id=12&id=34&id=56 // $routeParams.id = ["12", "34", "56"]
/?id=12 // $routeParams.id = "12"
这很糟糕。因为在第一种情况下,$routeParams.id[0]
给出了“12”
,
而在第二个字符中,它给出了“1”
(“12”
的第一个字符)
我可以通过在我的所有链接中插入一个空的id=
来解决这个问题,但这很难看
“类型签入控制器”是我唯一的选择吗?如果是,我该怎么做
index.html:
<html ng-app="app">
<head>
<script src="//code.angularjs.org/1.3.15/angular.js"></script>
<script src="//code.angularjs.org/1.3.15/angular-route.js"></script>
<script src="script.js"></script>
</head>
<body>
<div ng-view></div>
</body>
</html>
<a href="#/?id=12">#/?id=12</a><br/>
<a href="#/?id=12&id=34&id=56">#/?id=12&id=34&id=56</a><br/>
<a href="#/?id=12&id=">#/?id=12&id=</a><br/>
<pre>id: {{id | json:0}}</pre>
<pre>id[0]: {{id[0] | json}}</pre>
编辑:
对于那些想知道的人来说,我试图实现的是:控制器之间(或视图之间)的交流。用户在一个视图中选择一些项目,并在下一个视图中查看这些选定项目的详细信息 最好的方法不是多次使用id param,而是用另一个字符分隔您的值,并始终获得一个数组,这样您就可以开始了 script.js
(函数(){
var app=angular.module('app',['ngRoute']);
app.config([
“$routeProvider”,
函数($routeProvider){
$routeProvider.when(“/”{
templateUrl:'home.html',
控制器:“HomeCtrl”
});
}
]);
应用程序控制器('HomeCtrl'[
“$scope”、“$routeParams”,
功能($scope,$routeParams){
$scope.id=$routeParams.id.split('-');
}
]);
})();
home.html
排列
排列
id:{id | json:0}
id[0]:{{id[0]| json}
我想知道为什么要将不同的值传递给单个id。不过,这应该可以解决您的问题
angular.module('app', ['ngRoute'])
.config([
'$routeProvider',
function($routeProvider) {
$routeProvider.when('/', {
templateUrl: 'home.html',
controller: 'HomeCtrl'
});
}
])
.controller('HomeCtrl', [
'$scope', '$routeParams',
function($scope, $routeParams) {
$scope.id = $routeParams.id;
}
]);
angular.module('app', ['ngRoute'])
.config([
'$routeProvider', function($routeProvider) {
$routeProvider.when('/', {
templateUrl: 'home.html',
controller: 'HomeCtrl'
});
}
])
.controller('HomeCtrl', [
'$scope', '$routeParams', function($scope, $routeParams) {
$scope.id = angular.fromJson($routeParams.id);
}
]);