【发布时间】:2021-05-16 10:46:38
【问题描述】:
我正在尝试查看我的计算属性 isEllipsisActive() 以查看该值是真还是假,然后我想将 shouldShowArrow 设置为该值。
当用户根据条件this.wrap.scrollHeight < this.h1.scrollHeight;调整浏览器大小时,该值将发生变化,
目前它可以工作,但只有当我刷新浏览器时,我才需要在值更改时更新它。
如何查看isEllipsisActive()的值是否发生变化?
export default {
data() {
return {
h1: null,
wrap: null,
shouldShowArrow: false,
};
},
isEllipsisActive() {
if (!this.wrap && !this.h1) {
console.log("Not initialized", 'not initalized');
return false;
}
return this.wrap.scrollHeight < this.h1.scrollHeight;
},
},
mounted() {
this.$nextTick(() => {
this.h1 = this.$refs.h1;
this.wrap = this.$refs.wrap;
});
},
watch: {
isEllipsisActive(newValue) {
this.h1 !== null && console.log('changed')
},
},
};
【问题讨论】:
-
计算本身是动态的,你不需要使用手表来监控它的执行
-
你可以将
shouldShowArrow作为一个计算属性,依赖于isEllipsisActive的值,你不需要手动观看。 -
其动态性背后的基本概念是如果计算属性中使用的变量的值发生变化,那么它将动态重新运行
-
所以如果 this.h1 或 this.wrap 发生变化,那么我就是你的情况,那么计算的属性将自动重新运行..毫无疑问