2017-12-07 5 views
0

スロットスコープの仕組みは本当に分かりません。誰かがこの(見かけ上)かなり簡単な問題で私を助けることができるかどうか分かります。Vue.jsとVuetifyスロットスコープ

私が探しているのは、外部イベントに基づいてこの行を拡張するために手動で "props"を更新することです。問題は、私は上記の文脈の外でこれにアクセスする方法を理解することができないということです。 props.expanded =!props.expandedはうまく動作します。

アイデア?

答えて

0

コンポーネントに組み込まれている方法はありません。データテーブルは独自の展開オブジェクトを作成するので、渡された小道具は使用しません。

refを使用できます。 Vue page on child component refs

次のコードは、データテーブルの参照をaccesshereに設定します。

<v-data-table ref="accesshere" :headers="headers" :items="dataTable" 
:search="search" item-key="id"> 

今、あなたが使用してそのオブジェクトにアクセスできるようになります(これをfalseに設定し、拡張テーブルの行を終了します)this.$refs.accesshere.expanded['nameofkey'] = false

ここでは、アクションでそれを示すcodepenあります。

拡張されたオブジェクトに問題があり、最初に行を展開するまでは挿入されません。だから、あなたが次のようなことをすれば。これらの変更は表示されません(コンポーネントの更新を強制しない限り)ので、行をすぐに展開することはありません。

methods: { 
    itemShow() { 
    this.$refs.accesshere.expanded['2'] = true 
    this.$forceUpdate() // This works, I don't know if it is recommended though 
    } 
} 
+0

ジョーダン、返信ありがとうございます!私は仕事の並べ替えにこれを得たが、それはいくつかの奇妙な副作用があります。だから、私が今しようとしているのは、追加された後に新しい行を展開することです。だから私は試しました:これは$ refs.accesshere.expanded ['2'] = true;そして、私がこれをしてもうまくいきます。あなたが指摘したように、$ forceUpdate()。しかし、その後は正常に機能しません。私はもはやそれを崩壊するためにそれをクリックすることはできません。別の行をクリックすると、通常は折りたたまれ、他の行はすべて完全に機能します。それがどうして起こっているのか、そして/またはそれをどうやって修正するのか? –