मैं Vue.js में क्वेरी पैरामीटर कैसे ला सकता हूं?
उदाहरण के लिए http://somesite.com?test=yay
।
लाने के लिए रास्ता नहीं मिल रहा है या क्या मुझे इसके लिए शुद्ध JS या कुछ लाइब्रेरी का उपयोग करने की आवश्यकता है?
मैं Vue.js में क्वेरी पैरामीटर कैसे ला सकता हूं?
उदाहरण के लिए http://somesite.com?test=yay
।
लाने के लिए रास्ता नहीं मिल रहा है या क्या मुझे इसके लिए शुद्ध JS या कुछ लाइब्रेरी का उपयोग करने की आवश्यकता है?
जवाबों:
मार्ग ऑब्जेक्ट के डॉक्स के अनुसार , आपके पास $route
अपने घटकों से किसी ऑब्जेक्ट तक पहुंच है , जो कि आपकी आवश्यकता को उजागर करता है। इस मामले में
//from your component
console.log(this.$route.query.test) // outputs 'yay'
vue-router
है तो वास्तव में एक डुप्लिकेट होगा, क्योंकि उसे मानक JS विधियों का उपयोग करने की आवश्यकता होगी।
vue-router
टैग बनाया और इसे जोड़ा।
return next({ name: 'login', query:{param1: "foo" }, });
करना काम नहीं करता है। लॉगिन घटक के अंदर प्रोप param1
अपरिभाषित है।
बिना रूट-रूट के, यूआरएल को विभाजित करें
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(){
},
एक अन्य समाधान 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
आसानी से उपलब्ध होंगे तो आप खुद को क्यों विभाजित करेंगे ? developer.mozilla.org/en-US/docs/Web/API/… उदाहरण के लिए var querypairs = window.location.search.substr(1).split('&');
'=' द्वारा क्वेरी नाम-वैल्यू जोड़े को विभाजित करना हमेशा काम नहीं करेगा क्योंकि आप नामित क्वेरी मापदंडों को बिना मूल्य के भी पास कर सकते हैं; उदाहरण के लिए ?par1=15&par2
आपका कोड अब par2 पर एक अपवाद बढ़ाएगा क्योंकि '=' से विभाजित होने के परिणामस्वरूप tmp में केवल 1 तत्व होगा।
undefined
करते हैं getVars['par2']
।
अधिक विस्तृत उत्तर VueJS के newbies की मदद करने के लिए:
और कोड ही:
<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, ... })
मान्य सिंटैक्स नहीं है।
एक अन्य तरीका (यह मानते हुए कि आप उपयोग कर रहे हैं vue-router
), क्वेरी राउटर को अपने राउटर में एक प्रोप में मैप करना है। फिर आप इसे अपने घटक कोड में किसी अन्य प्रोप की तरह मान सकते हैं। उदाहरण के लिए, इस मार्ग को जोड़ें;
{
path: '/mypage',
name: 'mypage',
component: MyPage,
props: (route) => ({ foo: route.query.foo })
}
फिर आपके घटक में आप प्रोप को सामान्य के रूप में जोड़ सकते हैं;
props: {
foo: {
type: String,
default: null
}
},
तब यह उपलब्ध होगा this.foo
और आप इसके साथ कुछ भी कर सकते हैं (जैसे एक द्रष्टा सेट करें, आदि)
इस तिथि के अनुसार, डायनेमिक रूटिंग डॉक्स के अनुसार सही तरीका है:
this.$route.params.yourProperty
के बजाय
this.$route.query.yourProperty
query
URL से क्वेरीज़ प्राप्त करने के लिए उपयोग करना चाहिए । डॉक्स से: $ path.params के अलावा, $ मार्ग ऑब्जेक्ट अन्य उपयोगी जानकारी जैसे $ path.query (यदि 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()
}
})
नोट: में beforeRouteEnter
समारोह हम जैसे घटक के गुणों का उपयोग नहीं कर सकते हैं: this.propertyName
.कि की मैं क्यों पारित किया है vm
करने के लिए next
function.It उपयोग करने के लिए अनुशंसा की जिस तरह से Vue instance.Actually है vm
यह Vue उदाहरण के लिए खड़ा है
यदि आपका सर्वर php का उपयोग करता है, तो आप यह कर सकते हैं:
const from = '<?php echo $_GET["from"];?>';
बस काम करता है।