【发布时间】:2019-02-19 17:19:21
【问题描述】:
所以基本上我可以通过在创建的钩子中添加调整大小的正常 eventListner 并在销毁的钩子中删除它来观看window.scrollY。在调整大小时,我正在检查 window.scrollY,如果它高于或低于 500,我正在更改绑定不同类的布尔变量:
<nav class="navbar u-no-padding"
v-if="displayedNav"
:class="minimizedNav ? 'navbar__not-collapsed' : 'navbar__collapsed'">
另外,如果在 url 中有 :id(它是 vue 路由器的一部分),那么我完全隐藏了导航,所以我也使用 v-if 指令。
它工作正常,但后来我意识到我可以使用 vue watch 观看 window.srollY 以便在 window.srollY 高于或低于 500 时更改 data() 中的一些布尔变量
我还可以观看this.$route.params.id,如果已设置,则将this.displayed 更改为false。
所以最后我将有两个观察者来改变布尔值,在这个布尔值上我正在用 nav 做一些事情,如 html 所示。我试图创建它并最终得到
export default {
data() {
return {
minimizedNav: true,
displayedNav: true,
buildingId: this.$route.params.id
}
},
watch: {
'buildingId' : (data) => {
console.log(data);
if(data) this.displayedNav = false;
},
'window.scrollY' : (data) => {
console.log(data);
if(data > 500) this.minimizedNav = false;
if(data <= 500) this.minimizedNav = true;
}
}
}
但它不起作用,我怀疑它会 console.log(data) 在每次更改时数据为 this.$route.params.id 或 buildingId。但这并不能安慰任何事情。为什么,我在这里做错了什么?
【问题讨论】:
标签: vue.js vuejs2 resize addeventlistener watch