記住Vue公司具有單向數據流,所以如果你想設置組件上的東西,你可以簡單地傳遞一個道具,並使用watcher
觸發的變化:在父
Vue.component('gallery', {
template: `<div v-show="gallery">Gallery</div>`,
props: {
show: {
type: Boolean,
default: false
}
},
created() {
this.gallery = this.show;
},
watch: {
show(val) {
this.gallery = val;
}
},
data() {
return {
gallery: false
}
}
});
然後你將有:
new Vue({
el: '#app',
data: {
showGallery: false
}
});
,並使用以下標記:
<gallery :show="showGallery"></gallery>
看到這個的jsfiddle:https://jsfiddle.net/yx1uq370/
順便說一句,如果你只是想顯示隱藏整個組件,那麼你可以使用V-顯示組件本身上
Vue.component('gallery', {
template: `<div>Gallery</div>`
});
new Vue({
el: '#app',
data: {
showGallery: false
}
});
然後你的標記:
<gallery v-show="showGallery"></gallery>
下面是爲小提琴:https://jsfiddle.net/gfr9kmub/
最後一點,你確定你真的需要觸發此FR你的導航?我會假設你的導航會顯示視圖,並且視圖本身會照顧這種類型的狀態管理。否則,你可能想看看vuex來處理這種情況
所以這是在一個子組件,你想從父級觸發它?或者在父母處理? –
最好使用來自父組件的屬性 –
如果你的「osaka」組件遠離你的App.vue,你應該使用flux模式來從任何地方觸發'showGalery()'。 –