簡體   English   中英

關於 html 渲染的 Vue.js 指令

[英]Vue.js directives on html rendering

我做了這支 使用 Vue.js 的簡單選項卡。

每個選項卡都從此對象獲取它的內容:

var tabs = [
  {
    title: "Pictures",
    content: "Pictures content"
  },
  {
    title: "Music",
    content: "Music content. Wanna see some <a @click.prevent=\"show = 3\">Documents</a> content?"
  },
  {
    title: "Videos",
    content: "Videos content."
  },
    {
    title: "Documents",
    content: "Documents content. Wanna see some <a @click.prevent=\"show = 1\">Music</a> content?"
  },   
];

要呈現每個選項卡內容:

<div v-for="(tab, index) in tabs" v-if="show == index" :key="index" v-html="tab.content"></div>

我一直試圖讓“tab.content”上的那些點擊指令起作用:(我錯過了什么嗎?

提前致謝。

v-html不是 Vue 內容,它只是一個元素的innerHTML 您將無法在v-html內容中使用 Vue 指令或組件(!)。

您可以做的是捕獲並處理組件內的原生點擊事件 transition-group很方便。

 const tabs = [{ title: "Pictures", content: "Pictures content" }, { title: "Music", content: "Music content. Wanna see some <a data-show=\"3\">Documents</a> content?" }, { title: "Videos", content: "Videos content." }, { title: "Documents", content: "Documents content. Wanna see some <a data-show=\"1\">Music</a> content?" }, ]; var vue = new Vue({ el: "#app", data: { show: 0, tabs }, methods: { navigate(event) { const target = event.target; if (target.dataset.show) { event.preventDefault(); this.show = target.dataset.show; } } } });
 .section { padding: 2em 0; } .fade-up-enter-active, .fade-up-leave-active { transition: all 0.3s ease-in-out; } .fade-up-enter, .fade-up-leave-to { height: 0; transform: translateY(30px); opacity: 0; }
 <link href="//cdnjs.cloudflare.com/ajax/libs/bulma/0.6.1/css/bulma.min.css" rel="stylesheet" /> <script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.4.2/vue.min.js"></script> <div class="container section" id="app"> <div class="tabs"> <ul> <li v-for="(tab, index) in tabs" :class="{'is-active': show == index}"><a @click.prevent="show = index">{{tab.title}}</a></li> </ul> </div> <div class="texts"> <transition-group name="fade-up" target="div" appear @click.native="navigate"> <div v-for="(tab, index) in tabs" v-if="show == index" :key="index" v-html="tab.content"></div> </transition-group> </div> </div>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM