2016-12-20 5 views
1

私はvueコンポーネント用に反応性のあるデータソースとして提供する要素の配列を持っています(私はvueのchrome拡張でデータを検査しています):Vuejs 2個のアイテムが配列内にあり、配列のインデックスが保持されない

the view: [A,B,C,D,E] 
the data: [A,B,C,D,E] 

Iは、(B前)新しい位置に項目(D)を移動するので、第Iが所望のインデックスでそれを再挿入し、次いで、spliceと要素を削除:Iだから

the view: [A,D,B,C,E] 
the data: [A,B,C,D,E] 
Chromeビューインスペクタで2番目のコンポーネントを上に移動し、3番目の列を表示しますnが強調表示されます。データの3番目の要素にカーソルを合わせると、ビューで4番目の要素が強調表示されます。

ビューは正しく更新されますが、データの基になるようにしたいと考えています。 配列内の要素はオブジェクトです。

これは参考として渡されたと思いますか?

答えて

1

は、私が代わりにスプライスの私はVUEインスタンス上setremoveを使用する必要があり、私はそれを見つけたと思う: https://vuejs.org/v2/api/#Vue-set

あなたが直接 インデックスとデータバインド配列の要素を設定しないようにする必要があり、これらの変更はVue.jsによって取得されないためです`[::、{ 'B' 値} { 'A' 値}] 代わりに、あなたは`のような何かをすることによって自分のために物事を簡単にすることができ、拡張の$ set()メソッド

+0

を使用しています。また、 'v-for'で':key'を正しく使用しているかどうか確認してください。これを書くことは私に多くの理解を助ける:https://jsfiddle.net/crswll/ewhewzkz/21/ –

+0

ありがとう、@ビルクリスウェル!実際に私が使っているオブジェクトは、私が思いつく例よりも複雑です(サブ配列やオブジェクトなどで多くのプロパティを持っています)。 もう一つは ':key'-ingです。 ''で 'v-for'を使用するときだけでなく、重要ですか?それとも少なくとも私がどこかで読んだのは、コンソールのエラーメッセージが不平を言っていたことです。 – marchello