Date.now()
の使用が正しくありません。 タイムスタンプが非常に速いため、時々タイムスタンプが2 this.$set
操作の間で変更されないため、logs
オブジェクトの値を上書きします。最後1509287061243
財産だった
{
1509287060410:"I was clicked!"
1509287060412:"I was clicked again!"
1509287061243:"I was clicked again!"
}
:私は最初のボタンを
1509287060410 // first result of Date.now.
1509287060412 // Second Result of Date.now - this time, it's different from the first attempt, so 2 different entries will be created.
1509287061243 // another click on the button - timestamp has changed obviosuly.
1509287061243 // Javascript did the second Set so far, that time timestamp didn't even changed yet. thus, it overrides the value of the second entry
をクリックしますので、このログ、4つのthis.$set
操作の結果は、このlogs
オブジェクトを作成したとき
はDate.now()
のログを参照してくださいオーバーライド。
(関数の2番目の引数)のキーは、呼び出すたびに異なることを確認してください。
は私の新しいコードの提案を参照してください:
data() {
return {
title: 'Multiple Vue.set() not updating object/DOM',
logs: {},
index: 0
}
},
methods: {
log: function(data) {
console.log(Date.now())
this.index += 1
this.$set(this.logs, this.index, data)
},
うわー、私が今まで私は、キーを上書きするかもしれないという事実について考えたことがありません!これをフレームワークの中でやってみると、実際にはそれについて考えて、基本を追い払います。私はこれがAngularワールドで直面していたのと同じことだと思っていました。 ありがとうございました! – tbutcaru
問題はありません。:) – LiranC