2017-07-14 5 views
0

Ich habe eine Firebase-Site bereitgestellt, die gut funktioniert. Das Problem, das ich habe, ist das nächste: Inside main.js Ich habe eine Variable namens company. Gibt es eine Möglichkeit, diese Variable abhängig von der URL festzulegen? Zum Beispiel:Einstellen einer Variablen mit URL

site-ce207.firebaseapp.com/company=01 

Oder kennen Sie einen anderen Weg?

+2

Ja, aber das Beispiel, das Sie verwendet haben, wird nicht funktionieren. Die Verwendung von http: // www.example.com/# company = 01 oder http://www.example.com/?company=01 funktioniert. Sie können die Werte mithilfe von Regex oder den Methoden im Objekt 'location' abrufen. Bitte beachten Sie, dass diese Optionen nicht so sind, wie sie verwendet werden sollen. So können Nebenwirkungen auftreten. – Mouser

+1

Anstatt es als Parameter zu übergeben, sollten Sie auch den Identifier im Pfad 'site-ce207.firebaseapp.com/company/01' übergeben. Je nachdem, was Sie mit dieser URL erreichen möchten, ist letzteres vielleicht idiomatischer. –

Antwort

3

Wie Mouser wies darauf hin, dies ist ungültig:

site-ce207.firebaseapp.com/company=01 

Allerdings ist dieses nicht:

var queries=location.hash.slice(1).split("&").map(el=>el.split("=")); 

Abfragen now.looks:

site-ce207.firebaseapp.com#company=01&id=5 

Und es kann leicht analysiert werden so:

So

zu lösen es ein Objekt verwenden Sie können:

var getQuery={}; 
queries.forEach(query=>getQuery[query[0]]=query[1]); 

So, jetzt ist es einfach eine bestimmte Taste zu bekommen:

console.log(getQuery["company"]); 

Oder neue und einfach, eine Karte mit:

var query=new Map(queries); 
console.log(query.get("company")); 
+0

Arbeitete großartig! Nur eines: Da Firma das erste Element ist, ist es "Firma" statt "Firma". So gelöst von query.get ("# Firma"). – Ace

+0

@Ace richtig, bearbeitet, um diese wegzuschneiden ... –

+0

Bitte bearbeiten Sie Ihre Frage ohne Pfeilfunktionen, da sie noch nicht üblich sind. – Mouser

0

Ich habe eine einfache Funktion, die ich vor langer Zeit gefunden habe, um damit umzugehen. Ich habe ein bisschen modifiziert, um den Wert zu erhalten.

function param(name) { 
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); 
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), 
     results = regex.exec(location.search); 
    return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); 
} 

und dann den Wert I der

var myCity = param('cityid'); 

Folgendes tun zu verwenden, wenn so etwas wie die Ausstellung: http://example.com/?cityid=Guatemala

MyCity den Wert von 'Guatemala' meine App in haben.

Verwandte Themen