私は、2つのvueJsコンポーネント:person-details.vue
とphones.vue
を含むPHPページperson.php
を持っています。これらのコンポーネントのそれぞれは、同じ第3のコンポーネントnotify-delete
を含みます。このnotify-delete
コンポーネントには、親コンポーネント(人または電話)の削除アクションを確認するためのブートストラップモーダルダイアログが含まれています。 props
を使用してモーダル確認ダイアログでメッセージを設定し、$refs
を表示します。同じvueJsコンポーネントへの複数の参照の使用方法は?
問題:この小道具は、コンポーネントperson
からmsg
小道具を設定され、ダイアログが表示されたら 、メッセージが正しく設定されています。しかし、phones
コンポーネントから設定すると、ダイアログにはperson
で設定されたメッセージが表示されます。あたかもperson
がmsg
小道具の値を常に上書きしているかのように。ここ
はコードのサンプルです: person.php
:
<person-details details="<?= json_encode($person) ?>"></person-details>
<phones details="<?= json_encode($phones) ?>"></phones>
人-details.vue:
<template>
<notify-delete ref="modalDeletePerson" :entity="'person'" :msg="deleteMsg" @confirmed="deleteMe"></notify-delete>
<button type="button" @click="confirmDelete">Delete this person</button>
</template>
<script>
export default {
data() {
return {
deleteMsg: ''
}
},
methods: {
confirmDelete() {
this.deleteMsg = 'Are you sure you want to delete this person?'
this.$refs.modalDeletePerson.show()
},
deleteMe() {
// delete person
}
}
}
</script>
</template>
Phones.vue:
<template>
<notify-delete ref="modalDeletePhone" :entity="'phone'" :msg="deleteMsg" @confirmed="deleteMe($event)"></notify-delete>
<button type="button" @click="confirmDelete">Delete this phone</button>
</template>
<script>
export default {
data() {
return {
deleteMsg: ''
}
},
methods: {
confirmDelete() {
this.deleteMsg = 'Are you sure you want to delete this phone?'
this.$refs.modalDeletePhone.show()
},
deleteMe() {
// delete phone
}
}
}
</script>
通知-delete.vue:
<template>
<div id="modalDelete" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-body">
{{msg}}
</div>
<div class="modal-footer">
<button type="submit" data-dismiss="modal" @click="confirm">Delete</button>
<button type="button" data-dismiss="modal">Cancel</button>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
props: ['entity', 'msg'],
methods: {
show() {
$('#modalDelete').modal('show')
},
confirm() {
this.$emit('confirmed')
}
}
}
</script>
私は2つが同じコンポーネントのインスタンスを区別することができますどのように任意のアイデア?
ここに書いたように、テンプレートの 'Person-details.vue'にタイプミスがありますか? – Bert
はい、余分なペーストがありました。ありがとうございました。私はそれを編集した。 – Warrio