2016-05-23 3 views
0

Ich baue eine Anwendung (Express, Node und eckig), die Clients speichert und ihre Informationen anzeigen kann. Jedem Client ist ein ID-Schlüssel zugewiesen. Ich habe einen Link so erstellt, dass, wenn der Name des Clients geklickt wird, es zu einer URL geht, die so ist: client/{{client.id}}. Ich möchte diesen Parameter, id, extrahieren, damit ich die Klienten filtern und nur den mit dieser Identifikation zeigen kann. Hier ist meine Express.js, wo ich die Parameter-ID finden und drucken Sie es in der Konsole:Wie Parameter aus URL in HTML mit AngularJs injiziert werden

// express stuff 
app.param('id', function (req, res, next, id) { 
console.log(req.params.id); 
next(); 
}); 
app.get('/client/:id', routes.clientpage); 

Jetzt sehe ich die ID in Konsolenprotokoll gedruckt - aber unter Verwendung von Angular, wie würde ich diesen Parameter injizieren in ein Filter? Das ist, was ich denke, aber ich offenbar falsch:

<ng-repeat="client in clients | orderBy:'id' | filter:{id:{{$req.params.id}}} | limitTo: 1"/>

Antwort

1

Sie es tun können WHI einige url Ausdruck wie diese Analyse:

//in controller 
$scope.clientId = document.location.href.split('client/')[1]; 

//in template 
<ng-repeat="client in clients | orderBy:'id' | filter:{id:clientId} | limitTo: 1"/> 

Das ist für Urls wie myapp.com/example/client/46235 funktionieren wird, aber fehlschlagen für myapp.com/example/client/46235/getsmth so können Sie andere Lösungen verwenden:

  • angular UI router für Client-Seite app naviagtion
  • Geben Sie diese ID in einem Teil Ihrer servergenerierten Vorlage aus.
+0

Können Sie bitte erläutern, wie document.location.href.split ('client /') [1]; erreicht den gewünschten Effekt? –

+0

document.location.href.split ('client /') [1] verwendet die String-Split-Funktion (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split) - nimmt die URL der Seite (sagen wir zum Beispiel vollständige URL ist 'myapp.com/example/client/46235') und wird Ihnen den letzten Teil - '46235' zurückgeben. Dann können Sie es einer Scope-Variablen (z. B. $ scope.clientId) zuweisen und sie im Filterausdruck verwenden. – shershen

+0

danke, ich habe gerade ein Problem damit. Denkst du, du könntest beraten? –

Verwandte Themen