In Bezug auf $ location.search heißt es in den Dokumenten :
Gibt den Suchteil (als Objekt) der aktuellen URL zurück, wenn er ohne Parameter aufgerufen wird.
In meiner URL hat meine Abfragezeichenfolge einen Parameter '? Test_user_bLzgB' ohne Wert. Auch '$ location.search ()' gibt ein Objekt zurück. Wie bekomme ich den eigentlichen Text?
javascript
angularjs
Ian Warburton
quelle
quelle
$location.search()
aber ich möchte das "Objekt" überprüfen, das Sie erhalten, wenn Sie es aufrufen ...Antworten:
Ich bin nicht sicher, ob es sich geändert hat, seit die akzeptierte Antwort akzeptiert wurde, aber es ist möglich.
$location.search()
gibt ein Objekt mit Schlüssel-Wert-Paaren zurück, dieselben Paare wie die Abfragezeichenfolge. Ein Schlüssel, der keinen Wert hat, wird nur als wahr im Objekt gespeichert. In diesem Fall wäre das Objekt:Sie können direkt mit auf diesen Wert zugreifen
$location.search().test_user_bLzgB
Beispiel (mit größerer Abfragezeichenfolge): http://fiddle.jshell.net/TheSharpieOne/yHv2p/4/show/?test_user_bLzgB&somethingElse&also&something=Somethingelse
Hinweis: Aufgrund von Hashes (wie unter http://fiddle.jshell.net/#/url , wodurch eine neue Geige erstellt wird) funktioniert diese Geige nicht in Browsern, die den Verlauf von js nicht unterstützen (funktioniert nicht) im IE <10)
Bearbeiten:
Wie in den Kommentaren von @Naresh und @DavidTchepak ausgeführt,
$locationProvider
muss auch das ordnungsgemäß konfiguriert werden: https://code.angularjs.org/1.2.23/docs/guide/$location#-location-service-configurationquelle
$locationProvider
auch richtig konfiguriert werden: code.angularjs.org/1.2.23/docs/guide/… (Dies hat mich gestolpert. Hoffentlich spart der Link anderen etwas Zeit.)Wenn Sie nur die Abfragezeichenfolge als Text betrachten müssen, können Sie Folgendes verwenden:
$window.location.search
quelle
$location.search()
Gibt ein Objekt zurück, das aus den Schlüsseln als Variablen und den Werten als Wert besteht. Also: Wenn Sie Ihre Abfragezeichenfolge wie folgt schreiben:Sie könnten den Text leicht so bekommen:
Wenn Sie keinen Schlüssel mit dem Wert? Foo = bar verwenden möchten, empfehle ich die Verwendung eines Hashs #test_user_bLzgB,
und anrufen
würde 'test_user_bLzgB' zurückgeben, das sind die Daten, die Sie abrufen möchten.
Zusätzliche Information:
Wenn Sie die Abfragezeichenfolgenmethode verwendet haben und ein leeres Objekt mit $ location.search () erhalten, liegt dies wahrscheinlich daran, dass Angular die Hashbang-Strategie anstelle der HTML5-Strategie verwendet. Fügen Sie diese Konfiguration zu Ihrer hinzu, damit sie funktioniert Modul
quelle
Stellen Sie zuerst das URL-Format korrekt ein, um die Abfragezeichenfolge abzurufen. Verwenden Sie #? Q = Zeichenfolge , die für mich funktioniert
Injizieren Sie $ location service in den Controller
Die Ausgabe sollte also abcd sein
quelle
Sie können dies auch verwenden
quelle
Wenn Ihr
$location.search()
nicht funktioniert, stellen Sie sicher, dass Sie Folgendes haben:1)
html5Mode(true)
wird in der Modulkonfiguration der App konfiguriert2)
<base href="https://stackoverflow.com/">
ist in Ihrem HTML vorhandenVerweise:
quelle
Angular unterstützt diese Art von Abfragezeichenfolge nicht.
Der Abfrageteil der URL soll eine
&
getrennte Folge von Schlüssel-Wert-Paaren sein und somit perfekt als Objekt interpretierbar sein.Es gibt überhaupt keine API zum Verwalten von Abfragezeichenfolgen, die keine Sätze von Schlüssel-Wert-Paaren darstellen.
quelle
In meinem NodeJS-Beispiel habe ich eine URL "localhost: 8080 / Lists / list1.html? X1 = y", die ich durchlaufen und Werte erfassen möchte.
Um mit $ location.search () zu arbeiten, um x1 = y zu erhalten, habe ich einige Dinge getan
meine list1.js hat
und meine list1.html hat
Anleitung: https://code.angularjs.org/1.2.23/docs/guide/$location
quelle
Mein Fix ist einfacher, erstelle eine Factory und implementiere als eine Variable. Beispielsweise
quelle