我的猜测是 <div id="slider"> 一旦Vue编译完整模板并自行渲染(在安装之后),模板中的模板将被替换为不同的元素实例。我的意思是,在 mounted 钩, this.Slider 和 document.getElementById('slider') 不再引用相同的元素( this.Slider 从DOM中删除)。
<div id="slider">
mounted
this.Slider
document.getElementById('slider')
可能没有理由 Slider 在...内定义 data 阻止(它不需要被动反应),只需将其初始化即可 mounted 钩而不是:
Slider
data
mounted() { this.Slider = document.getElementById('slider') noUiSlider.create(this.Slider, ...) }
实际上,更好的方法是使用 ref 获取元素的实例而不是查询DOM:
ref
<div ref="slider"></div>
mounted() { noUiSlider.create(this.$refs.slider, ...) }