2016-03-10 38 views
40

vue.jsでクエリパラメータを取得するにはどうすればよいですか?Vue.jsクエリパラメータ

http:://somesite.com?test=yay 

フェッチする方法が見つからないか、このために純粋なJSまたはライブラリを使用する必要がありますか?

+1

可能な重複: //stackoverflow.com/questions/901115/how-can-i-get-query-valring-in-javascript) –

+0

なぜこれが投票されますか?私はVue.jsのためにそれが必要です。いくつかのvueライブラリや何かが組み込まれていれば、raw jよりも優先されます。 – Rob

+0

あなたがそれを使っているなら、おそらくVue Routerには何かがあります。 –

答えて

52

route objectのドキュメントによれば、コンポーネントから、$routeオブジェクトにアクセスして、必要なものを公開することができます。この場合

//from your component 
console.log(this.$route.query.test) // outputs 'yay' 
+1

彼が標準的なJSメソッドを使用する必要があるので、これは実際に重複しているよりも 'vue-router 'を使用していない場合。 – Jeff

+0

私は、同じユーザーがvue-routerに関する質問の直前に投稿しているので、そのことを評価していればvue-routerタグを作成すると思います。 –

+1

良い点!私は先に進み、 'vue-router'タグを作成して追加しました。 – Jeff

11

VueJsの初心者を助けるもっと詳しい答え。

<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) 
    }, 
}); 
+1

説明してください –

+0

ルータのオブジェクトを最初に定義し、適切と思われるモードを選択します。ルートリスト内にルートを宣言できます。次に、メインアプリにルータが存在することを知らせたいので、メインアプリ宣言の内側に宣言します。最後に、$ route instanceは、現在のルートに関するすべての情報を保持します。私のコードは、urlで渡されたパラメータだけをログに記録します。 – Sabyasachi

+1

VueRouterはVueJSコアには含まれていないので、VueRouterを別々に含めることができます: 'スクリプトsrc = "https://unpkg.com/vue-router"> ' – rustyx

1

がVUEルートがなければ、

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 URLを分割:

var vm = new Vue({ 
    .... 
    created() 
    { 
    let uri = window.location.search.substring(1); 
    let params = new URLSearchParams(uri); 
    console.log(params.get("var_name")); 
    }, 
    updated(){ 
    }, 
[私はJavaScriptでクエリ文字列の値を取得できますか?](HTTPの
+1

'location.search'がすぐに利用できるときに' location.href'を分割するのはなぜですか? https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/search '= 'querypairs = window.location.search.substr(1).split(' &'); ' クエリ名と値のペアを' = 'で分割することは、名前のないクエリパラメータも値なしで渡すことができるので必ずしも機能しません。 '?par1 = 15&par2' あなたのコードでは、 '='で分割すると '1'の要素のみでtmpになりますので、par2で例外が発生します。 – Arthur

+0

例外はスローされませんが、par2を捕まえることはありません。 'undefined'を' getVars ['par2'] 'にします。 – Arthur

+0

GETメソッドはURL( – erajuan