मैं 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
queryURL से क्वेरीज़ प्राप्त करने के लिए उपयोग करना चाहिए । डॉक्स से: $ 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करने के लिए nextfunction.It उपयोग करने के लिए अनुशंसा की जिस तरह से Vue instance.Actually है vmयह Vue उदाहरण के लिए खड़ा है
यदि आपका सर्वर php का उपयोग करता है, तो आप यह कर सकते हैं:
const from = '<?php echo $_GET["from"];?>';
बस काम करता है।