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);
  }
]);