Wie kann ich Abfrageparameter in Vue.js abrufen?
ZB http://somesite.com?test=yay
.
Sie können keinen Weg zum Abrufen finden oder muss ich dafür reines JS oder eine Bibliothek verwenden?
Wie kann ich Abfrageparameter in Vue.js abrufen?
ZB http://somesite.com?test=yay
.
Sie können keinen Weg zum Abrufen finden oder muss ich dafür reines JS oder eine Bibliothek verwenden?
Antworten:
Nach der Dokumentation der Route Objekt , haben Sie Zugriff auf ein $route
Objekt aus Ihren Komponenten, das enthüllen , was Sie brauchen. In diesem Fall
//from your component
console.log(this.$route.query.test) // outputs 'yay'
vue-router
wäre dies in der Tat ein Duplikat, da er Standard-JS-Methoden verwenden muss.
vue-router
Tag erstellt und hinzugefügt.
return next({ name: 'login', query:{param1: "foo" }, });
funktioniert nicht. Innerhalb der Login-Komponente ist die Requisite param1
undefiniert.
Teilen Sie die URL ohne Vue-Route
var vm = new Vue({
....
created()
{
let uri = window.location.href.split('?');
if (uri.length == 2)
{
let vars = uri[1].split('&');
let getVars = {};
let tmp = '';
vars.forEach(function(v){
tmp = v.split('=');
if(tmp.length == 2)
getVars[tmp[0]] = tmp[1];
});
console.log(getVars);
// do
}
},
updated(){
},
Eine andere Lösung https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/search :
var vm = new Vue({
....
created()
{
let uri = window.location.search.substring(1);
let params = new URLSearchParams(uri);
console.log(params.get("var_name"));
},
updated(){
},
location.href
trennen, wenn es location.search
verfügbar ist? developer.mozilla.org/en-US/docs/Web/API/… zB Das var querypairs = window.location.search.substr(1).split('&');
Aufteilen der Abfrage-Name-Wert-Paare durch '=' funktioniert nicht immer, da Sie benannte Abfrageparameter auch ohne Wert übergeben können. Beispiel: ?par1=15&par2
Ihr Code würde jetzt eine Ausnahme auf Par2 auslösen, da das Teilen durch '=' zu tmp mit nur 1 Element führt.
undefined
zu getVars['par2']
.
Detailliertere Antwort, um den Neulingen von VueJS zu helfen:
Und der Code selbst:
<script src="https://unpkg.com/vue-router"></script>
var router = new VueRouter({
mode: 'history',
routes: []
});
var vm = new Vue({
router,
el: '#app',
mounted: function() {
q = this.$route.query.q
console.log(q)
},
});
<script src="https://unpkg.com/vue-router"></script>
new Vue({ router, ... })
ist keine gültige Syntax.
Eine andere Möglichkeit (vorausgesetzt, Sie verwenden vue-router
) besteht darin, den Abfrageparameter einer Requisite in Ihrem Router zuzuordnen. Dann können Sie es wie jede andere Requisite in Ihrem Komponentencode behandeln. Fügen Sie beispielsweise diese Route hinzu.
{
path: '/mypage',
name: 'mypage',
component: MyPage,
props: (route) => ({ foo: route.query.foo })
}
Dann können Sie in Ihrer Komponente die Requisite wie gewohnt hinzufügen.
props: {
foo: {
type: String,
default: null
}
},
Dann wird es verfügbar sein this.foo
und Sie können alles tun, was Sie wollen (wie einen Beobachter einstellen usw.)
Ab diesem Datum ist der korrekte Weg gemäß den dynamischen Routing-Dokumenten :
this.$route.params.yourProperty
anstatt
this.$route.query.yourProperty
query
, um die Abfragen von der URL abzurufen. Aus den Dokumenten: Zusätzlich zu $ route.params macht das $ route-Objekt auch andere nützliche Informationen verfügbar, wie z. B. $ route.query (wenn die URL eine Abfrage enthält)
Sie können vue-router verwenden. Ich habe ein Beispiel unten:
URL: www.example.com?name=john&lastName=doe
new Vue({
el: "#app",
data: {
name: '',
lastName: ''
},
beforeRouteEnter(to, from, next) {
if(Object.keys(to.query).length !== 0) { //if the url has query (?query)
next(vm => {
vm.name = to.query.name
vm.lastName = to.query.lastName
})
}
next()
}
})
Hinweis: In beforeRouteEnter
Funktion können wir nicht die Eigenschaften der Komponente zugreifen wie: this.propertyName
.Das ist , warum ich die passieren müssen , vm
um next
function.It ist die recommented Weg zum Zugang der vue instance.Actually die vm
es für vue Instanz steht
Sie können mit dieser Funktion erhalten.
console.log(this.$route.query.test)
Wenn Ihr Server PHP verwendet, können Sie dies tun:
const from = '<?php echo $_GET["from"];?>';
Funktioniert einfach.