Eckig $routeParams: get-query-parameter als array

Wenn ich mehrere id Parameter in der Abfrage $routeParams.id gibt mir ein array.
Das ist toll. Aber, wenn nur ein id vorhanden ist, in der Abfrage, bekomme ich einen string.

/?id=12&id=34&id=56    // $routeParams.id = ["12", "34", "56"]
/?id=12                //$routeParams.id = "12"

Ist das schlecht. Weil im ersten Fall $routeParams.id[0] gibt "12",
während in der zweiten, es gibt "1" (Erster char von "12").

Kann ich arbeiten, um durch einfügen einer leeren id= alle meine links, aber das ist hässlich.

Finden Sie in Plunker

"Type-Check-in-controller" meine einzige option? Wenn ja, wie mache ich es?

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>

home.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>

script.js:

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

EDIT:
Für diejenigen, die sich Wundern, was ich versuche zu erreichen ist: inter-controller (oder inter-view -) Kommunikation. Der Benutzer wählt einige Elemente in einer Ansicht, und hält die details für die ausgewählten Elemente in die nächste Ansicht. Finden Sie in Plunker.

InformationsquelleAutor musa | 2015-04-11

Schreibe einen Kommentar