在我使用Vue的移动web应用程序中,我想在软键盘弹出时隐藏我的页脚.所以我有一个小函数来测试窗高和窗宽的比率...

showFooter(){
    return h / w > 1.2 || h > 560;
}

...我向你宣布.内部高度/窗口.在我的数据里.

    data: { h: window.innerHeight, w: window.innerWidth }

问题是,当windows 打开时.innerHeight更改后,我的h属性不会获得新值.我怎么能看windows .内高?

推荐答案

我相信有更好的方法可以做到这一点,但在我想出办法之前,这一种方法会对你有用:

基本上,你只需要一个数据props 和一个观察者就可以做到这一点.

new Vue({
    el: '#app',
    data() {
        return {
            windowHeight: window.innerHeight,
            txt: ''
        }
    },

    watch: {
        windowHeight(newHeight, oldHeight) {
            this.txt = `it changed to ${newHeight} from ${oldHeight}`;
        }
    },

    mounted() {
        this.$nextTick(() => {
            window.addEventListener('resize', this.onResize);
        })
    },

    beforeDestroy() { 
        window.removeEventListener('resize', this.onResize); 
    },

    methods: {  
        onResize() {
            this.windowHeight = window.innerHeight
        }
    }
});

这将输出更改

<div id="app">
    <br> Window height: {{ windowHeight }} <br/>
    {{ txt }}
</div>

Vue.js相关问答推荐

VueJS使所有组件崩溃,而不是只有一个

在VITE-VUE APP-DEV模式上重定向HTTP请求

为什么在 Vue2 中调用 this.$emit() 后 props 没有立即更新?

如何在Vue3中使用vuechartjs 5.2从父组件更新图表

Vuetify 复选框未正确显示值

我在 nuxt2 中看不到索引页

如何使用 vue 或 javascript 向服务器发送密码?

将 Vue 应用程序挂载到主 Vue 应用程序的容器中

如何使用 vue.js 获取本地 html 文件?

用 axios 搜索:新字符时取消之前的请求

Vuelidate 判断true/false

如何渲染数组以 Select 选项 vue.js

Vuetify v-data-table ,如何在 HTML 中呈现标题文本?

在 Vuejs 中Watch观察 window.scrollY 的变化

Vuejs 2,VUEX,编辑数据时的数据绑定

Modal 内部的 Vue.js AJAX 调用

动态注册本地 Vue.js 组件

如何从 keep-alive 中销毁缓存的 Vue 组件?

Vue 2.0 设置路由 - 不要使用new来产生副作用

在 Vuejs 中全局导入 Axios 方法