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 $route
objek dari komponen Anda, yang mengekspos apa yang Anda butuhkan. Pada kasus ini
//from your component
console.log(this.$route.query.test) // outputs 'yay'
vue-router
daripada ini memang akan menjadi duplikat, karena dia perlu menggunakan metode JS standar.
vue-router
tag dan menambahkannya.
return next({ name: 'login', query:{param1: "foo" }, });
tidak bekerja. di dalam komponen login prop param1
tidak 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.href
saat location.search
tersedia? 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.
undefined
ke 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.foo
dan 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
query
untuk 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 beforeRouteEnter
fungsi kita tidak bisa mengakses properti komponen seperti: this.propertyName
.Itu ini mengapa saya harus lulus vm
untuk next
function.It adalah cara recommented untuk mengakses vue yang instance.Actually yang vm
berdiri 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.