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.
"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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der beste Weg, es zu tun ist, nicht zu verwenden, id, param mehrere Male, aber trennen Sie die Werte mit einem anderen Charakter und immer ein array, und Sie sind bereit zu gehen!
script.js
home.html
InformationsquelleAutor codegaze
Frage ich mich, warum Sie auf der Durchreise sind verschiedene Werte für eine einzelne id. Allerdings sollte dies Ihr problem lösen
InformationsquelleAutor Olatunde Garuba