2017-04-03 9 views
2

の両方を経由して、親コンテナとの通信:VueJSは、私は私はこのようなコンポーネントの親と通信することができます知っているV-ため、サプライ指標と引数

<container> 
    <child-component v-for="(thing, index) in things" 
    :key="index" 
    v-on:thingDidSomething="thingDidSomethingInParent(index)" 
    ></child-component> 
</container> 

しかし、私はthingDidSomethingから引数を指定したい場合はどのような子供のメソッド:

v-on:thingDidSomething="thingDidSomethingInParent" 

インデックス(キー)を供給しています。子コンポーネントのキーにアクセスできますか?

+1

インデックスを小道具として渡すことができます。 – Bert

答えて

6

this.$vnode.keyは、子コンポーネント内にkeyという値を与えます。しかし、プロパティはpublic APIの一部として文書化されていません。

<child-component v-for="(thing, index) in things" 
:key="index" 
:index="index" 
v-on:thingDidSomething="thingDidSomethingInParent" 
></child-component> 

とコンポーネント

Vue.component("child-component",{ 
    props:["index"], 
    methods:{ 
     emitThingDidSomething(){ 
      this.$emit('thingDidSomething', this.index, <other arguments>) 
     } 
    } 
}) 

Example:私はこれを行うための最も安全な方法は、このようなものになるだろうと思います。

+0

あなたの答えをありがとう!ああ、それを行う唯一の方法は、より簡単な方法はありませんか?何らかの方法で小道具に渡さずに子コンポーネントのキーに直接アクセスすることはできませんか? – user1506145

+1

@ user1506145子コンポーネントの 'this。$ vnode.key'がキーを与えます。それはVueの内部値なので、ちょっと注意してください。 – Bert

+1

@ user1506145答えとサンプルを更新しましたが、必要に応じて渡すことをお勧めします。そうでなければそれはあなた次第です! :) – Bert

関連する問題