鍍金池/ 問答/HTML/ VUE 模板怎樣復用?

VUE 模板怎樣復用?

<ul class="panel">
    <li class="action_list action_expanded">
        <MenuStatus/>
    </li>
    <li class="action_list"
        :class="{'action_expanded': 1 == secActive}">
        <div class="toggle"
            @click.prevent.stop="toggleSecMenu(1, $event)">
            <span class="action_name">Apparent Horizon</span>
        </div>
        <MenuApparentHorizon/>
    </li>
    <li class="action_list"
        :class="{'action_expanded': 2 == secActive}">
        <div class="toggle"
            @click.prevent.stop="toggleSecMenu(2, $event)">
            <span class="action_name">Material</span>
        </div>
        <MenuMaterial/>
    </li>
    <li class="action_list"
        :class="{'action_expanded': 3 == secActive}">
        <div class="toggle"
            @click.prevent.stop="toggleSecMenu(3, $event)">
            <span class="action_name">Camera</span>
        </div>
        <MenuPerspective/>
    </li>
</ul>

如上代碼, 重復性很高,請問該怎么優(yōu)化呢?

最開始寫的

<template v-for="(item, index) in items">
  <li class="action_list"
      :class="{'action_expanded': index == secActive || !item.text}"
      v-if="item.template">
      <div v-if="item.text" class="toggle"
          @click.prevent.stop="toggleSecMenu(index, $event)">
          <span class="action_name">{{ item.text }}</span>
      </div>
      <component @closeMenu="closeMenu" :is="item.template"></component>
  </li>
  <li class="action_list" v-else @click.prevent.stop="item.action">{{ item.text }}</li>
</template>


items: [
    {
        template: MenuStatus
    },
    {
        text: "Apparent Horizon",
        template: MenuApparentHorizon
    },
    {
        text: "Material",
        template: MenuMaterial
    },
    {
        text: "Camera",
        template: MenuPerspective
    }
]

感覺太復雜了,不利于后續(xù)修改

回答
編輯回答
爆扎

創(chuàng)建一個html文件,其他組件引用這個文件作為模版,其實也就是一個字符串的多次引用

2018年9月6日 14:57