Vue.js:如何在不刷新的情况下更新布局

Vue.js:如何在不刷新的情况下更新布局,vue.js,Vue.js,我想做的是使对话框全屏时,屏幕大小是小的。 我现在的代码是这样的 <v-dialog max-width="600px" :fullscreen="screen_width < 450 ? true : false"> ... screen_width: screen.width ... 屏幕宽度:screen.width 但是,这种方式不会在屏幕变小时更新布局,除非用户刷新屏幕 <v-dialog class="dialog"> @m

我想做的是使对话框全屏时,屏幕大小是小的。 我现在的代码是这样的

<v-dialog 
    max-width="600px"
    :fullscreen="screen_width < 450 ? true : false">

...

screen_width: screen.width

...
屏幕宽度:screen.width
但是,这种方式不会在屏幕变小时更新布局,除非用户刷新屏幕

<v-dialog class="dialog">

@media only screen and (max-width: 450px)
.dialog {
    width: 100%;
    height: 100%;
}

@仅介质屏幕和(最大宽度:450px)
.对话{
宽度:100%;
身高:100%;
}

我也试过这种方法,但没用。如何在不让用户刷新屏幕的情况下更改布局?

而不是
screen.width
我更倾向于跟踪视口宽度
window.innerWidth

下面的示例跟踪宽度和高度,并通过Vue原型上的反应对象将其公开。该对象可以作为实例上的
$viewport
属性访问。
窗口上的
resize
事件用于侦听视口大小的更改,并相应地更新反应值

如果要在应用程序的多个位置使用视口大小,将其添加到原型中非常有用。如果您只想在一个特定的地方使用它,那么您可以将大部分逻辑移到您的组件中。在这种情况下,您不需要使用
Vue.observable
,而只需要为宽度设置一个合适的
data
属性。当组件被销毁时,您还需要删除
resize
侦听器

constupdatesizes=(obj={})=>{
obj.width=window.innerWidth
obj.height=window.innerHeight
返回obj
}
Object.defineProperty(Vue.prototype,$viewport){
值:Vue.observable(updateSizes())
})
window.addEventListener('resize',()=>{
更新(Vue.prototype.$viewport)
})
新Vue({
el:“#应用程序”,
vuetify:新的vuetify(),
数据(){
返回{
对话:对
}
}
})

标题
正文

而不是
屏幕.宽度
我更倾向于跟踪视口宽度,
窗口.内部宽度

下面的示例跟踪宽度和高度,并通过Vue原型上的反应对象将其公开。该对象可以作为实例上的
$viewport
属性访问。
窗口上的
resize
事件用于侦听视口大小的更改,并相应地更新反应值

如果要在应用程序的多个位置使用视口大小,将其添加到原型中非常有用。如果您只想在一个特定的地方使用它,那么您可以将大部分逻辑移到您的组件中。在这种情况下,您不需要使用
Vue.observable
,而只需要为宽度设置一个合适的
data
属性。当组件被销毁时,您还需要删除
resize
侦听器

constupdatesizes=(obj={})=>{
obj.width=window.innerWidth
obj.height=window.innerHeight
返回obj
}
Object.defineProperty(Vue.prototype,$viewport){
值:Vue.observable(updateSizes())
})
window.addEventListener('resize',()=>{
更新(Vue.prototype.$viewport)
})
新Vue({
el:“#应用程序”,
vuetify:新的vuetify(),
数据(){
返回{
对话:对
}
}
})

标题
正文

非常感谢。它确实起到了我想做的作用。。谢谢你的解释,非常感谢。它确实起到了我想做的作用。。也谢谢你的解释