Vue.js'de sorgu parametrelerini nasıl alabilirim?
Örn http://somesite.com?test=yay
.
Getirmenin bir yolunu bulamıyor veya bunun için saf JS veya kitaplık kullanmam gerekiyor mu?
Vue.js'de sorgu parametrelerini nasıl alabilirim?
Örn http://somesite.com?test=yay
.
Getirmenin bir yolunu bulamıyor veya bunun için saf JS veya kitaplık kullanmam gerekiyor mu?
Yanıtlar:
Route nesnesinin belgelerine göre $route
, bileşenlerinizden ihtiyacınız olan şeyi ortaya çıkaran bir nesneye erişebilirsiniz . Bu durumda
//from your component
console.log(this.$route.query.test) // outputs 'yay'
vue-router
o standart JS yöntemleri kullanmak gerekecektir olarak gerçekten de yinelenen olacağını bundan daha.
vue-router
etiketi oluşturup ekledim.
return next({ name: 'login', query:{param1: "foo" }, });
işe yaramaz. giriş bileşeninin içinde pervane param1
tanımsızdır.
Vue-route olmadan URL'yi bölün
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(){
},
Başka bir çözüm 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
location.search
Hazır olduğunda kendinizi bölesiniz? developer.mozilla.org/tr-TR/docs/Web/API/… ör var querypairs = window.location.search.substr(1).split('&');
. Sorgu adı-değer çiftlerini '=' ile bölmek de adlandırılmış sorgu parametrelerini değer olmadan da aktarabileceğiniz için her zaman çalışmaz; Örneğin, ?par1=15&par2
kodunuz artık par2'de bir istisna oluşturacaktır çünkü '=' ile bölmek sadece 1 öğeyle tmp ile sonuçlanacaktır.
undefined
gibi getVars['par2']
.
VueJS'in yeni başlayanlarına yardımcı olmak için daha ayrıntılı cevap:
Ve kodun kendisi:
<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, ... })
geçerli bir sözdizimi değil.
Başka bir yol (kullandığınız varsayılarak vue-router
), sorgu parametresini yönlendiricinizdeki bir pervane ile eşlemektir. Sonra bileşen kodunuzdaki diğer herhangi bir pervane gibi davranabilirsiniz. Örneğin, bu rotayı ekleyin;
{
path: '/mypage',
name: 'mypage',
component: MyPage,
props: (route) => ({ foo: route.query.foo })
}
Sonra bileşeninizde pervaneyi normal olarak ekleyebilirsiniz;
props: {
foo: {
type: String,
default: null
}
},
O zaman mevcut olacak this.foo
ve onunla istediğiniz her şeyi yapabilirsiniz (bir gözlemci ayarlamak gibi)
Bu tarihten itibaren, dinamik yönlendirme belgelerine göre doğru yol :
this.$route.params.yourProperty
onun yerine
this.$route.query.yourProperty
query
URL'den sorgu almak için kullanmalısınız . Dokümanlar'dan: $ route.params'a ek olarak, $ route nesnesi de $ route.query (URL'de bir sorgu varsa) gibi diğer faydalı bilgileri ortaya çıkarır
Vue-router'ı kullanabilirsiniz. Aşağıda bir örneğim var:
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()
}
})
Not: In beforeRouteEnter
biz gibi bileşenin özelliklerini erişemez fonksiyonu: this.propertyName
i geçmesi neden .That en vm
etmek next
function.It vue instance.Actually erişime recommented yoludur vm
o vue örneğin standları
Bu fonksiyonu kullanarak alabilirsiniz.
console.log(this.$route.query.test)
Sunucunuz php kullanıyorsa, bunu yapabilirsiniz:
const from = '<?php echo $_GET["from"];?>';
Sadece çalışıyor.