Angulaire $routeParams: obtenir des paramètres de la requête sous forme de tableau
Lorsque j'ai plusieurs id
paramètres dans la requête, $routeParams.id
me donne un tableau.
C'est très bien. Mais, si un seul id
est présent dans la requête, j'obtiens une chaîne de caractères.
/?id=12&id=34&id=56 // $routeParams.id = ["12", "34", "56"]
/?id=12 //$routeParams.id = "12"
Ce qui est mauvais. Parce que dans le premier cas, $routeParams.id[0]
donne "12"
,
alors que dans le second, il donne "1"
(premier char de "12"
).
Je peux travailler partout en insérant un vide id=
à tous mes liens, mais c'est laid.
Est "la vérification de type de contrôleur" ma seule option? Si oui, comment dois-je faire?
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:
Pour ceux qui se le demandent, ce que je suis en train de réaliser est: inter-contrôleur (ou inter-view) de la communication. L'utilisateur sélectionne certains éléments dans une vue, et voit des détails pour les éléments sélectionnés dans la vue suivante. Voir dans Plunker.
OriginalL'auteur musa | 2015-04-11
Vous devez vous connecter pour publier un commentaire.
La meilleure façon de le faire est de ne pas utiliser l'id de param plusieurs fois, mais séparé de vos valeurs avec un autre personnage et de toujours obtenir un tableau et vous êtes prêt à aller!
script.js
home.html
OriginalL'auteur codegaze
Je me demande pourquoi vous êtes de passage à des valeurs différentes à un id unique. Toutefois, cela devrait résoudre votre problème
OriginalL'auteur Olatunde Garuba