2017-12-06 9 views
1

私はvueアプリケーションを開発していますが、現在はvueルータを使用する必要があります。 しかし、データをルータテンプレートにバインドするのに少し問題があります。Vueルーター。バインドデータ

私を助けてください。

HTML:

<div id="app"> 
    <h1>Hello App!</h1> 
    <p> 
    <router-link to="/foo">Go to Foo</router-link> 
    <router-link to="/bar">Go to Bar</router-link> 
    </p> 
    <router-view></router-view> 
</div> 

スクリプト:

const Foo = { template: '<div>{{foo}}</div>' } 
const Bar = { template: '<div>bar</div>' } 


const routes = [ 
    { path: '/foo', component: Foo }, 
    { path: '/bar', component: Bar } 
] 

const router = new VueRouter({ 
    routes 
}) 


const app = new Vue({ 
el: '#app', 
    router, 
    data: function(){ 
    return {foo: "asdasdas"} 
    } 
}) 

{{foo}}バインドは動作しません。

ライブ例: https://jsfiddle.net/xgrjzsup/4430/

答えて

-1

あなたのケースでは、あなたがその "foo" というVARにアクセスできる2つの方法があります。

{{$parent.foo}} 
{{$root.foo}} 

しかし、あなたのアプリケーションでデータを共有するためのVuexを使用することを検討 - https://github.com/vuejs/vuex をまたはルートへのパラメータとしてそのFOOを渡す - それは動作しませんOFC https://router.vuejs.org/en/essentials/passing-props.html

0

。使用するテンプレートにデータを設定する必要があります。あなたのケースで

const Foo = { 
    template: '<div>{{foo}}</div>', 
    data() { 
    return { 
     foo: 'magic' 
    } 
    } 
} 

乾杯と幸せコーディング。 guide on componentsから

2

すべてのコンポーネントのインスタンスは、それ自身の単離された範囲を有しています。これは、 子の親データを直接参照することはできません(またはしないでください)。 コンポーネントのテンプレートです。データは、小道具を使用して子コンポーネント に渡すことができます。

およびFooは、ルータ経由で設定したアプリの子コンポーネントです。

親から子へデータを渡す1つの方法は、小道具を使用することです。

const Foo = { 
    props: ['foo'], 
    template: '<div>{{foo}}</div>' 
} 

をして

<router-view :foo="foo"></router-view> 

更新フィドルテンプレートで親プロパティをバインドします:

fooプロパティを受け入れるようにFoo定義を変更しhttps://jsfiddle.net/xgrjzsup/4431/

+0

ありがとう!もう1つの質問。非常に答えが欲しい。 1)この場合単純なオブジェクトではなく、どのように使うべきですか?たとえば、{prop1:{prop1_1: "123"、prop1_2: "321"}、prop2: "asd" ..etc} '2)新しいルートにリダイレクトする前に、いくつかのajaxリクエストを統合する方法はありますか?たとえば、 "foo"リンクをクリックし、リダイレクトする前にgetオブジェクトをバインドするよう要求します。 – snowil

+0

私は単純なオブジェクトではなく、私はデータ()を使用することができます赤色です。しかし、データのデフォアルートはどうなるのでしょうか? vuexなしでこれを行うことはできますか? – snowil

関連する問題