我在Vue.js自定義組件(2):是否有可能從組件訪問事件偵聽器在Vue.js 2
Vue.component("modal-panel", {
props: {
id: {
required: true
},
title: {} ,
size: {
validator: function(value) {
return !value || value=="lg" || value=="sm";
}
},
confirmLabel: {
"default": "Yes",
},
closeLabel: {
"default": "No"
},
confirm: {
type: Function
}
},
//...
template: `
//...
<button type="button" class="btn btn-primary confirm" data-dismiss="modal" v-on:click="$emit('confirm')" v-if="confirm">{{confirmLabel}}</button>
//...
`
}
,這是使用分量
<modal-panel title="New User" id="userModal" @confirm="doSomething">...</modal-panel>
代碼
從組件代碼中可以看出,確認已經插入到道具中,並且在模板中的按鈕代碼上根據是否確認收聽者來附加條件呈現。但是,按鈕不會呈現。我檢查了組件dom和屬性,但沒有這樣的信息。
是否可以根據vue.js中的組件是否附加特定偵聽器來進行條件渲染?
謝謝。
感謝伯特。是的,這是一種選擇,我只是好奇另一種方法是否可行。據我瞭解,事實並非如此。 – yavuzkavus
@yavuzkavus從技術上講,這是可能的,但你必須檢查Vue的內部API。在組件中,'_events'屬性將列出組件上的事件處理程序。你可以檢查是否有'confirm'的處理程序。 – Bert
@yavuzkavus我爲此添加了一個示例,但我會推薦回調方法。 – Bert