1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

pythonを使ってリアクティブなWebアプリを作りたい【開発編3-2】

Last updated at Posted at 2021-07-20

こちらの続きです。

今回は表示系をつくります

最終的なゴールはこちら
Vue_Material_Admin_Template.png

ToDoの登録画面及び、登録されたToDoの表示部分を作ります。

変更を伴うファイルは以下の通り

distについてはbulid後のファイルそのままなので、特に自分で作るというものではありません。

ToDo.vueについて

frontend/src/views/todo/ToDo.vue

frontend/src/views/todo/ToDo.vue
  mounted() {
    this.$store
      .dispatch('fetchTodo', {
        user_id: this.$store.state.auth.user_id,
      })
      .then(() => {
        //console.log('getToDos-----')
        //console.log(getToDos)
      })
      .catch(() => {
        this.loading = false
      })
  },

見慣れないmountedという項目が出てきました。
これは、このページがロードされた際に実行するという意味です。
dispatchでfetchTodoを呼び出していますが、画面がロードされた際に、当該ユーザが持っているToDoのレコードを取得しますよという意味です。

user_id: this.$store.state.auth.user_id

これも見慣れない表現ですが、auth.jsのstateに入っているuser_idを呼び出しますという意味です。
データの格納先は
frontend/src/store/modules/auth.js
で定義されており、ログイン時にUserテーブルに格納されているユーザーのIDを登録するようになっています。

画面ロード時はそれくらいですね。

登録部分について

handleSubmitFormを呼び出してキーワードを登録しています。

frontend/src/views/todo/ToDo.vue
  methods: {
    handleSubmitForm() {
      console.log('handleSubmitForm')
      console.log(this.formModel)
      console.log('todo: ' + this.formModel.todo)
      this.loading = true
      if (this.formModel.todo != null) {
        this.$store
          .dispatch('addtodo', { todo: this.formModel.todo, user_id: this.$store.state.auth.user_id })
          .then(() => {
            this.loading = false
          })
          .catch(() => {
            this.loading = false
          })
      }
    },

addtodoにJSON煮詰めたデータを渡しているというおなじみな形です。

削除部分について

これは初見部分があります。

          <v-data-table
            v-model="selected"
            show-select
            :headers="todo_headers"
            :items="$store.state.todo.todos"
            hide-default-footer
            class="elevation-0 table-striped"
          >

v-modelにselectedというものが配置されているのですが、これは同ファイルのdataの中で定義されたただの配列の入れ物です

v-data-tableでチェックを入れたデータがseledtedの中に入ります。あとはそれを使ってdispatchでデータを送信するだけですね。

このような形で、データの入力及び削除ができるようになります。お試しください。

関連リンク

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?