2017-04-07 52 views
0

在我的vue應用中,中的某些特定組件使用vue提供的<keep-alive></keep-alive>進行緩存。以編程方式銷燬其他組件的組件

posts.vue組件在用戶登錄正如我上面

一切說緩存工作正常。

現在我想破壞posts.vue組件在用戶登錄時out.So是posts.vue組件重新呈現時再次

註銷按鈕的用戶登錄存在於其他完全組件menu.vue和上點擊邏輯註銷存在於這個nenu.vue組件

所以,我怎麼能實現這個使用vm.$destroy()menu.vue成分分析法對posts.vue組件

所以我的主要問題是如何從其他

docs警告使用此如下控制一個組件的生命週期:,

在正常使用情況下,你不應該調用這個方法你自己。

希望使用v-ifv-for以數據驅動的方式控制子組件的生命週期。

但對我來說,我不能用v-ifv-show

或者有沒有更好的辦法可以使用

+0

什麼是現在發生的事情時重新進行登錄並嘗試訪問posts.vue? – Deepak

+0

@Deepak先前緩存的帖子也正在顯示....所以我希望這個組件強制重新呈現當用戶再次登錄 –

+0

如果你可以發佈posts.vue內完成可能會有所幫助。獲取數據的函數應該在創建的鉤子中調用。這應該照顧它。 – Deepak

回答

1

當您登錄或子組件註銷,發出的登錄'或'註銷'事件。

<template> 
    <div id="app"> 
    <router-view name='login' @login="login=true"></router-view> 
    <router-view name='header' @logout="login=false"></router-view> 
    <keep-alive v-if="login"> 
     <router-view name='write'></router-view> 
    </keep-alive> 
    <router-view name='management'></router-view> 
    <router-view name='account'></router-view> 
    <router-view name='statistics'></router-view> 
    <router-view name='view'></router-view> 
    <router-view name='password'></router-view> 
    </div> 
</template> 

<script> 
export default { 
    name: 'app', 
    data() { 
    return { 
     login: true 
    } 
    } 
} 
</script> 

<style> 
#app { 
    font-family: 'Avenir', Helvetica, Arial, sans-serif; 
    -webkit-font-smoothing: antialiased; 
    -moz-osx-font-smoothing: grayscale; 
    text-align: center; 
    color: #2c3e50; 
    margin-top: 0; 
    height: 100%; 
} 
</style> 
0

我有類似的問題,一個簡單的解決方案,我發現是迫使通過location.reload(),從而清除keep-alive重新加載Web應用程序。

您也可能會發現這個有趣的討論:https://github.com/vuejs/vue/issues/6259