前提・実現したいこと
このコードをVuexのストアのアクション→ミューテーション→ステートでデータ保持をしたいです。まったくわかりません。どなたか教えて下さい。コード丸投げで申し訳ありません。
該当のソースコード
nuxt.js vuex
<template> <div> <h2>データ行</h2></template> <script> export default { data(){ return{ list: [ { item1: '', item2: '', item3: '' } ] } }, created: function(){ }, methods: { // 追加 add: function(arr, index){ const newItem = {}; Object.keys(arr[arr.length-1]).forEach(function(k){ newItem[k] = ''; }); arr.splice(index + 1, 0, newItem); }, // 削除 remove: function(arr, index){ if (arr.length <= 1) return; arr.splice(index, 1); }, // 上に移動 up: function(arr, index){ if (index == 0) return; const items = arr.splice(index, 1); arr.splice(index - 1, 0, items[0]); }, // 下に移動 down: function(arr, index){ if (index == arr.length - 1) return; const items = arr.splice(index, 1); arr.splice(index + 1, 0, items[0]); }, // 送信 submit: function(){ }, } } </script><table> <thead> <th class="no-column">No</th> <th>項目1</th> <th>項目2</th> <th>項目3</th> <th class="action-column">操作 <button type="button" @click="add(list, -1)">+</button></th> </thead> <tbody> <tr v-for="row, index in list" :key="index"> <td class="no-column">{{index + 1}}</td> <td><input type="text" v-model="row.item1"></td> <td><input type="text" v-model="row.item2"></td> <td> <select v-model="row.item3"> <option value="A">A</option> <option value="B">B</option> <option value="C">C</option> </select> </td> <td class="action-column"> <div class="btn-group"> <button type="button" @click="add(list, index)">+</button> <button type="button" :disabled="index == 0" @click="up(list, index)">↑</button> <button type="button" :disabled="index == list.length - 1" @click="down(list, index)">↓</button> <button type="button" :disabled="list.length <= 1" @click="remove(list, index)">-</button> </div> </td> </tr> </tbody> </table> <h2>データの状況</h2> <pre>{{list}}</pre> </div>
補足情報(FW/ツールのバージョンなど)
nuxt.js vuex
あなたの回答
tips
プレビュー