javascript - Vue v-html 渲染 [object HTMLQuoteElement]
问题描述
我正在尝试使用插槽创建通用幻灯片组件。我能够访问传递到插槽中的元素,当我记录它们时,它们似乎是 DOM 元素,但当它们出现在页面上时,它们只是[object HTMLQuoteElement]
.
这是组件:
<template>
<div :class="cssClasses">
<div v-show="false">
<slot></slot>
</div>
<transition v-if="slots.length" name="carousel-fade" tag="div">
<div v-html="currentSlide"></div>
</transition>
</div>
</template>
<script>
export default {
props: {
// Classes to apply to wrapping element.
cssClasses: { default: '' },
// Integer for miliseconds to remain on each slide.
interval: { default: 5000 }
},
data() {
return {
// Internal: Timer for playing through slides.
timer: null,
// Internal: Current slide.
index: 0
}
},
computed: {
currentSlide() {
if (this.$slots.default[this.index].elm) {
console.log('currentSlide', this.$slots.default[this.index].elm) // prints correctly
return this.$slots.default[this.index].elm // renders wrong
}
return ''
},
slots() {
return this.$slots.default
}
},
methods: {
// Internal: Start slideshow.
startSlide() {
if (this.timer) clearInterval(this.timer)
this.timer = setInterval(this.next, this.interval)
},
// Internal: Render next slide. If at end, return to the beginning.
next() {
this.startSlide()
if (this.index === this.slots.length - 1) {
this.index = 0
} else {
this.index += 1
}
}
},
mounted() {
this.startSlide()
}
}
</script>
目标是能够将任何 html 元素传递到插槽中,以便幻灯片通过它们。此时我只是添加无意义的文本,因为堆栈溢出不会让我发布我的问题,因为它主要是代码。但其实,也没什么好说的了。你可以阅读代码。你知道我想要做什么。如果我做错了什么,请告诉我。我没有必要浪费我们俩的时间,所以机器人可以计算字符来决定一个人是否有足够的信息。
解决方案
推荐阅读
- ios - 如何使用按钮和图像选择多个单元格以选中和取消选中
- sql-server - SQL Server 库存年龄计算 - 嵌套游标的替代方法
- scipy - 如何在 Python 中实现 FIR 高通滤波器?
- linux - 如何在 linux 中组装、链接和运行 .s 文件?
- javascript - 网页无限滚动时如何让Apify爬虫滚动整页?
- azure - 在 Datafactory Azure 上的 SSIS 2016 中将变量父级传递给子级的问题
- tomcat8 - 如何通过允许多个 IP 范围而不是特定 IP 地址来限制对我的 tomcat 页面的访问?
- .net - HttpWebRequest 总是发送 TLS 1.0
- java - 获取字段名称作为已定义类的字符串。那可能吗?
- jquery - $.browser.msie 为 jQuery v1.8.3 返回 undefined