2017-05-11 2 views
0

$ router.push経由であらかじめ定義されたフォームデータを何とか渡そうとしているので、そのリンクをクリックすると、あらかじめ定義されたデータ/フォームをdropdrownのように入力するか、入力フォームにデータを渡してくださいVueの別のコンポーネントでフォームを作るために小道具を渡す方法

私は別の方法を試しましたが、何も問題なく動作しました。私はデータを渡したい別のVueのコンポーネントで

入力:

<input type="text" name="" value=""> 

クリックしてルータ:

<ul> 
    <li @click="clickRouter(path)"> Click here </li> 
</ul> 

data() { 
    return { 
     path: '/products', 
    }; 
    }, 
    methods: { 
    clickRouter(link) { 
     this.$router.push(link); 
    }, 
    }, 

更新:

// with query, resulting in /register?plan=private 
router.push({ path: 'register', query: { plan: 'private' }}) 
Programmatic Navigationによると、あなたはこれを行うことができます

今このURLは?plan = private私は何かできるようにしたいlike /register?name=Myname

これはコンポーネントに入力された名前をあらかじめ入力します。

乾杯

答えて

2

どのような方法を試しましたか?

私は二つの可能性を参照

  1. 使用vuex

clickRouter -methodのプロパティを設定し、input -fieldでそれを結合する親コンポーネントにプロパティを設定します。

更新:

index.js(ルータ):

import Vue from "vue"; 
import Router from "vue-router"; 
import register from "@/components/register"; 

Vue.use(Router); 

const router = new Router({ 
    routes: [ 
     { 
      path: "/register", 
      name: "register", 
      component: register 
     } 
    ] 
}); 
export default router; 

App.vue:

<template> 
    <div id="app"> 
     <header> 
      <button @click.stop.prevent:="clickRouter(path)">Go to register</button> 
     </header> 
     <main> 
      <router-view></router-view> 
     </main> 
    </div> 
</template> 

<script> 
    export default { 
     name: "app", 
     data() { 
      return { 
       path: '/register', 
       prefill: '' 
      } 
     }, 
     methods: { 
      clickRouter(link) { 
       this.prefill = 42; 
       this.$router.push({ path: link, query: { plan: 'private' }}); 
      } 
     } 
    } 
</script> 

register.vue:

<template> 
    <input <input type="text" name="" :value="prefill"> 
</template> 

<script> 
    export default { 
     computed: { 
      prefill() { 
       return this.$parent.prefill; 
      } 
     } 
    } 
</script> 
+0

私はvuexを使用しませんが、複雑になるでしょう。親コンポーネントでどのようにプロパティを使用する必要がありますか?理解できません ?データを渡したいvueコンポーネントは検索フィルタ/フォームであり、clickRouterはメインカテゴリなどのいくつかの定義済みの検索結果を渡すだけで済みます。また、いくつかのカテゴリがあります – Marketingexpert

+0

ルータは責任を負いません状態を周りに渡すことはできません。それは、URL上のUI depoendingを変更することです。前のコンポーネントのローカルデータに依存しない方法で動作する必要があります。 遠隔のコンポーネント間で状態を共有する必要がある場合は、プロアクティブなソリューションが実際にvuexになるような共有状態管理が必要なように聞こえますが、https:// vuejsなどの単純なソリューションもあります。 .org/v2/guide/state-management。html#シンプルステートマネジメントからスクラッチ –

+0

私は単純な状態管理やvuex経由での値渡しを考えるよりも、@LinusBorgの詳細については私の質問を更新しました。 – Marketingexpert

関連する問題