下記のような表をVue.jsとUIフレームワークのVuetify.jsを使用して作成しなければなりません。
開発環境としてはNuxt.jsを使用しています。
この表のサンプルデータは下記のような形です。
TypeScript
1export const dummyData = [ 2 { 3 id: "1", 4 name: "a", 5 sub: [ 6 { 7 id: "1#1", 8 name: "b", 9 sub_sub: [ 10 { id: "1#1#1", name: "b-a" }, 11 { id: "1#1#2", name: "b-b" }, 12 ] 13 }, 14 { 15 id: "1#2", 16 name: "c", 17 sub_sub: [ 18 { id: "1#2#1", name: "c-a" }, 19 ] 20 }, 21 ] 22 }, 23 { 24 id: "2", 25 name: "d", 26 sub: [ 27 { 28 id: "2#1", 29 name: "e", 30 sub_sub: [ 31 { id: "1#2#1", name: "e-a" }, 32 ] 33 } 34 ] 35 }, 36] 37
表の一列目のrowspanは三列目のデータの数に依存して変更できるようにするために、
メソッドを作成し、:rowspanというかたちで、変数を動的に変更したいと思い
コードを下記のように作成しました。
Vue.js
1<template> 2 <div> 3 <v-simple-table dense> 4 <thead> 5 <tr> 6 <th class="blue lighten-5">name</th> 7 <th class="blue lighten-5">sub_name</th> 8 <th class="blue lighten-5">sub_sub_name</th> 9 </tr> 10 </thead> 11 <tbody> 12 <template v-for="item in items"> 13 <tr v-for="(subitem, iSub) in item.sub" :key="subitem.id"> 14 <td v-if="iSub === 0" :rowspan="rowSpanCalc(item)"> 15 {{ item.name }} 16 </td> 17 <template v-if="(sub_subitem, iSub_sub) in subitem.sub_sub"> 18 <td v-if="iSub_sub === 0" :rowspan="subitem.sub_sub.length"> 19 {{ subitem.name }} 20 </td> 21 <td :key="sub_subitem.id">{{ sub_subitem.name }}</td> 22 </template> 23 </tr> 24 </template> 25 </tbody> 26 </v-simple-table> 27 </div> 28</template> 29<script lang="ts"> 30import { Component, Vue } from 'nuxt-property-decorator' 31import { dummyData } from '~/store/dummy' 32 33@Component({}) 34export default class extends Vue { 35 items: any = [] 36 37 created() { 38 this.items = dummyData 39 } 40 41 rowSpanCalc(item: any) { 42 const count = item.sub.reduce( 43 (total: any, curr: any) => total + curr.sub_sub.length, 44 0 45 ) 46 return count; 47 } 48} 49</script> 50<style lang="scss" scoped> 51table { 52 border-collapse: collapse !important; 53} 54.v-data-table--dense > .v-data-table__wrapper > table > tbody > tr > td { 55 border-bottom: thin solid rgba(0, 0, 0, 0.12) !important; 56} 57</style>
動的に変数を渡すことはできたのですが、画面の表示が下記のようになり、想定したのものと違う状況です。
現状エラーとして下記のようにコンソール上に出ております。
"Property or method "iSub_sub" is not defined on the instance but referenced during render."
解決が出来ず非常に困っております。
どなたかお力添えをいただけませんでしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。