代码之家  ›  专栏  ›  技术社区  ›  sandrina-p

动态更改Vue JS 2上的父元素标记

  •  1
  • sandrina-p  · 技术社区  · 6 年前

    如何根据prop条件在不同父元素之间切换,使其内容保持不变?

    示例:如果 Item isRouter 道具,它渲染 router-link 使用所需的属性,否则它将呈现一个简单的 li 元素。

    /* Item.vue */
    
    <router-link v-if="isRouter" tag="li" :to="to" active-class="is-active">
    <li v-else>
        /* some html */
        <slot></slot>
        /* more html */
    </li>
    </router-link>
    
    // View.vue
    <list>
      <item isRouter to="/new">
        Breaking News
      </item>
      <item>
        Orange
      </item>
    </list>
    

    这可以吗?你建议我采用什么方法?

    1 回复  |  直到 6 年前
        1
  •  2
  •   obermillerk    6 年前

    好吧,我真的找到了做你想做的事的方法!

    使用Vue component 标签和 vbind:is 财产(或 :is 速记)。

    <component :is="isRouter ? 'router-link' : 'li'" :to="to">
      <!-- repeated content -->
      <slot></slot>
      <!-- more repeated content -->
    </component>
    

    这个 如果需要,可以将属性委托给计算属性。并且要知道你想要传递给 router-link 需要为 成分 标记,但如果您不想在 li .

    这就是我找到它的地方: https://vuejs.org/v2/guide/components.html#Dynamic-Components
    如果您需要进一步阅读,这里还有一个链接指向有关动态组件的更多详细信息。