質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

解決済

Vue.jsのバリデーション実行時にセッションで上書きしたいが、初期データが設定されてしまう

kaori_luna
kaori_luna

総合スコア0

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

2回答

0評価

0クリップ

46閲覧

投稿2019/05/29 09:37

編集2022/01/12 10:58

前提・実現したいこと

画面表示時、入力項目の値にはセッションから設定するようにしています。
しかし、Vue.jsにてバリデーションを実行して、画面を再表示した際に、セッション情報でなく初期データで先に上書きされてしまいます。

Vue.jsのバリデーション実行後、画面を再表示した際に、初期データではなくセッション情報が先に表示されるようにする方法を教えて下さい。

例えば:下記のソースセッションがあるのに、いつも 先にcategory= 1です。セッションのデータは後に別の値を設定しています。

発生している問題・エラーメッセージ

[Vue warn]: Avoid adding reactive properties to a Vue instance or its root $data at runtime - declare it upfront in the data option.

該当のソースコード

Vue.js

data: { url: "", category: 1, errors: {}, }, created: function() { let count_data = 0; for (let key in old_data) { if (old_data[key] != null && old_data[key] != "") { count_data += 1; } } if(count_data > 0) { for(let key in old_data){ this.$set(this, key, old_data[key]); } }else{ //セッションのデータを表示されます。 let that = this; axios.get('api/getSession') .then(res => { Object.entries(res.data).map(function(data){ that.$set(that, data[0], data[1]); }); }) } },

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。