Bagaimana saya bisa mengambil parameter kueri di Vue.js?
Misalnya http://somesite.com?test=yay.
Tidak dapat menemukan cara untuk mengambil atau apakah saya perlu menggunakan JS murni atau pustaka untuk ini?
Bagaimana saya bisa mengambil parameter kueri di Vue.js?
Misalnya http://somesite.com?test=yay.
Tidak dapat menemukan cara untuk mengambil atau apakah saya perlu menggunakan JS murni atau pustaka untuk ini?
Jawaban:
Menurut dokumen objek rute , Anda memiliki akses ke $routeobjek dari komponen Anda, yang mengekspos apa yang Anda butuhkan. Pada kasus ini
//from your component
console.log(this.$route.query.test) // outputs 'yay'
vue-routerdaripada ini memang akan menjadi duplikat, karena dia perlu menggunakan metode JS standar.
vue-routertag dan menambahkannya.
return next({ name: 'login', query:{param1: "foo" }, });tidak bekerja. di dalam komponen login prop param1tidak terdefinisi.
Tanpa vue-route, bagi URL
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(){
},
Solusi lain 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.hrefsaat location.searchtersedia? developer.mozilla.org/en-US/docs/Web/API/... misalnya var querypairs = window.location.search.substr(1).split('&');Memisahkan pasangan nilai-nama kueri dengan '=' tidak akan selalu berfungsi karena Anda dapat memberikan parameter kueri yang dinamai tanpa nilai juga; mis ?par1=15&par2. Kode Anda sekarang akan memunculkan eksepsi pada par2 karena pemisahan dengan '=' akan menghasilkan tmp dengan hanya 1 elemen.
undefinedke getVars['par2'].
Jawaban yang lebih terperinci untuk membantu para pemula VueJS:
Dan kode itu sendiri:
<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, ... })bukan sintaks yang valid.
Cara lain (dengan asumsi Anda menggunakan vue-router), adalah untuk memetakan param kueri ke prop di router Anda. Kemudian Anda dapat memperlakukannya seperti penyangga lain dalam kode komponen Anda. Misalnya, tambahkan rute ini;
{
path: '/mypage',
name: 'mypage',
component: MyPage,
props: (route) => ({ foo: route.query.foo })
}
Kemudian di komponen Anda, Anda dapat menambahkan penyangga seperti biasa;
props: {
foo: {
type: String,
default: null
}
},
Maka akan tersedia this.foodan Anda dapat melakukan apa pun yang Anda inginkan dengannya (seperti mengatur pengamat, dll.)
Pada tanggal ini, cara yang benar sesuai dengan dokumen perutean dinamis adalah:
this.$route.params.yourProperty
dari pada
this.$route.query.yourProperty
queryuntuk mendapatkan kueri dari URL. Dari dokumen: Selain $ route.params, objek $ route juga memaparkan informasi berguna lainnya seperti $ route.query (jika ada kueri di URL)
Anda dapat menggunakan vue-router. Saya punya contoh di bawah ini:
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()
}
})
Catatan: Dalam beforeRouteEnterfungsi kita tidak bisa mengakses properti komponen seperti: this.propertyName.Itu ini mengapa saya harus lulus vmuntuk nextfunction.It adalah cara recommented untuk mengakses vue yang instance.Actually yang vmberdiri misalnya vue
Anda bisa mendapatkan Dengan Menggunakan fungsi ini.
console.log(this.$route.query.test)
Jika server Anda menggunakan php, Anda dapat melakukan ini:
const from = '<?php echo $_GET["from"];?>';
Hanya bekerja.