【Vue.js】配列の監視(Deep)がうまく動かないので小細工をしてみた

Javascript,開発

おはようございます。

ちょこちょこ Vue を触っていて

とても便利なのですが、配列の監視がちょっとかゆいところに手が届かない感じですね。

配列を監視する際に一番知りたいのは

  • 何行目のどの項目が変更されたのか
  • 変更前、変更後の値

なんじゃないかと思うのですが、単純にできません。

また、watch 関数の引数には oldValue, newValue が渡されてくるのですが、どちらも同じものになっています。(ばぐ?仕様?)

ということで、

ひとまず何行目が変更されたのか、チェックできるようにしてみました。

プログラムは前回のものを流用。

【Vue.js】テーブル内にドロップダウンリストを設置してみる

スポンサーリンク

プログラム

CSS

css/style.css

CSSに変更ありませんが、一応。

html

index.html

各項目も変更できるようにテキストボックスにしました。

javascript

js/script.js

起動してみる

チェック結果
チェック結果

まとめ

変更前のデータを保持する変数を用意し、初期化時にデータをセットしてデータ変更時に更新していくという感じなのですが、

javascript は 単純に代入するだけだと、どちらの変数も同じものとして扱われるため、一度 Json(文字列)にパース、再度 Object にパースして代入してあげる必要があります。

(嚙み砕いてます)

そんでもって deep watch を定義して、新旧の比較を行えばどこが変更されたのかチェックができますね。

比較処理をもっと細かくすれば、どの項目が変更されたのかまでチェック可能です。

何かのお役に立てれば。

ではでは。

スポンサーリンク


関連するコンテンツ