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

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

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

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

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Vue CLI

Vue CLIは、Vue.jsでアプリケーション開発を行うためのコマンドラインインタフェース(CLI)に基づいた開発ツールです。インタラクティブなプロジェクトの雛形や設定なしで使用できるプロトタイプの作成など、さまざまな機能が用意されています。

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

Q&A

0回答

680閲覧

vue.jsでfirebaseを使用してデータの編集処理をしたい

tenlife

総合スコア70

Vue.js

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

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Vue CLI

Vue CLIは、Vue.jsでアプリケーション開発を行うためのコマンドラインインタフェース(CLI)に基づいた開発ツールです。インタラクティブなプロジェクトの雛形や設定なしで使用できるプロトタイプの作成など、さまざまな機能が用意されています。

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

0グッド

0クリップ

投稿2020/05/10 22:20

Vue.js初心者です。

firebaseを使った編集処理を実装しようとしているのですが、つまづいています。(crud機能)

モーダルを表示するところまでは正しく動作(選択したbookが表示)しているのですが、モーダル内の編集ボタンを押すと毎回booksの中の最後のbookが書き換えられてしまいます。

booksはvuexを使って取っています

<li v-for="(book, index) in books" :key="index"> 本のタイトル: <p>{{book.title}}</p> <div id="edit-main" v-if="showModal" @click.prevent="changeModal"> <div id="content" @click.stop> <span class="close" @click.prevent="changeModal">x</span> <h4>編集</h4> <label for="title">本の名前:</label> <input type="text" placeholder="本の名前" v-model="bookItem.title"> <textarea placeholder="本の感想" v-model="bookItem.text"></textarea> <b-button variant="warning" @click.prevent="editBook(bookItem, index)">編集</b-button> </div> </div> <b-button variant="warning" @click.prevent="changeModal(book)">編集</b-button> <b-button variant="danger" @click.prevent="deleteBook(index)">削除</b-button> </li> <script> import {mapState} from 'vuex' import firebase from 'firebase' import'firebase/database' export default { data() { return { bookItem: '', title: '', text: '', showModal: false } }, computed: { ...mapState(['books']) }, created() { this.$store.dispatch('getAllBook') }, methods: { changeModal(book) { if(this.showModal === true) { return this.showModal = false } else { this.bookItem = book return this.showModal = true } }, editBook(book, key) { var update = {} update['/posts/' + key] = book firebase.database().ref().update(update) }, deleteBook(id){ return this.$store.dispatch('deleteBook', id) } } } </script>

Object.assign(book, update)は画面上では狙い通りになりますが、firebaseには変更点が上がらずでした。(予想通り)

もしくは違う書き方の方がわかりやすいものがあるのでしょうか?

editBook内の処理に問題があるのかなと予想していますが、原因がわからず困っています。

どなたか知恵を貸していただきたいです

vue 2.6.11

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問