我的应用程序的结构是这样的:
根组件(安装在 main.js 中(使用 vue-cli 生成)):
<template @parallax-event="parallaxHandler" >
<div id="app">
<RepeatingWords></RepeatingWords>
<NavigationBar></NavigationBar>
<Intro></Intro>
<router-view />
</div>
</template>
该组件的脚本如下所示:
export default {
components: {
RepeatingWords,
NavigationBar,
Intro,
},
data() {
return {
parallaxMovement: Number,
myWorldParagraph: String,
}
},
methods: {
parallaxHandler(factor, htmlElementString) {
this.parallaxMovement = Math.round((window.scrollY / window.outerHeight) * - factor);
this.myWorldParagraph = htmlElementString;
console.warn(htmlElementString);
htmlElementString.style.transform = 'translateX(' + (this.parallaxMovement - 0) + 'px)';
}
},
};
现在在我的子组件中(我想使用这个方法/触发这个事件)我有这个:
parallaxScrollEffect() {
this.$emit('parallax-event', [200, document.querySelector('.some-html-elem')]);
},
mounted() {
window.addEventListener('scroll', this.parallaxScrollEffect);
},
到目前为止,发生了两件事:
- 在 Vue DevTools 选项卡事件上触发事件(其中很多是因为滚动),
- 论据具有我给出的值
- 没有任何控制台警告,
- 元素不动,除了 vue 工具外,我没有收到任何反馈
我试过了:
- 在原始方法中说 factor.target 和 htmlElementString.target 但这不起作用,
删除函数内的所有内容,除了控制台日志并传递一个带有一些乱码字符串值的单个变量,例如:
this.$emit('parallax-event', ['123123qwe');
这也没有用。
我究竟做错了什么?!
先感谢您。
编辑:修正了小错误 - 不是父变量而是参数