私はVue.jsでカスタムコンポーネントを持ってVue.jsのコンポーネントからイベントリスナーにアクセスすることは可能です(2)のように:は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