見積登録画面で、費目の行を必要に応じてユーザが追加出来るようにしたい。
WF

Front(途中)

### Vue.jsでテスト実装
– Vue.jsはインラインで実装する
– 配列IDを持たせておき、ユーザが追加ボタンを押すと、フォームの行が追加され、inputフォームのnameには配列のIDを挿入する
<div class="row justify-content-center mt-3">
<div class="col-8">
<form class="row">
<div id="app" class="col-12">
<div class="row d-flex justify-content-between form-group mb-3">
<input-field
v-for="item in route_input"
v-bind:todo="item"
v-bind:key="item"
></input-field>
</div>
<div class="row d-flex justify-content-around form-group">
<div @click="add_route" class="btn btn-info col-2">追加</div>
</div>
</div>
</form>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
var data_array = ['1','2','3'];
new Vue({
el: '#app',
data: {
route_input: data_array,
},
methods: {
add_route: function(){
var add = this.route_input.length + 1;
this.route_input.push(add)
}
},
components: {
'input-field':{
template: `
<div class="route_count col-12 mb-3 row d-flex justify-content-between">
<input class="col-3 form-control" type="text" :value="todo.time" :name="'route[' + todo + '][time]'">
<input class="col-8 form-control" type="text" :value="todo.place" :name="'route[' + todo + '][place]'">
</div>`,
props: ['todo']
}
}
})
</script>

見たところ行けそうな予感はある。
DBのカラムは10個ぐらいにしたいので、if add < 10 then add の処理も追加する必要があるか。ちょっと複雑だな。