【发布时间】:2020-09-24 19:08:04
【问题描述】:
我不知道我想要的是否能以我想要的方式实现。我正在为模态使用这个 Vue 插件:https://www.npmjs.com/package/vue-js-modal
我有一个名为ModalButton 的组件负责触发模态:
<modal-button :modal-data="{{ collect(['account' => $account]) }}" modal-name="leave-account">Leave Account</modal-button>
如您所见,我将:modal-data 作为道具发送。
ModalButton 组件如下:
<template>
<button @click.prevent="show" type="button" class="px-3 py-2 bg-gray-200 font-bold text-gray-700 ">
<slot></slot>
</button>
</template>
<script>
// @ is an alias to /src
export default {
name: 'ModalButton',
data() {
return {
}
},
props: {
modalName: String,
modalData: Object
},
methods: {
show () {
this.$modal.show(this.modalName, this.modalData);
},
hide () {
this.$modal.hide(this.modalName);
}
}
}
</script>
您可以看到来自插件的show 方法正在将该数据发送到模态
this.$modal.show(this.modalName, this.modalData);
在我的刀片模板(我正在使用 laravel)中,我有 <modal>:
<modal name="leave-account" class="text-center">
<div class="flex items-center justify-center h-full p-6">
<div>
<div>
<div class="text-3xl font-bold mb-2">Are you sure?</div>
<p>If you leave this account, you won't be able to join back unless invited again. </p>
</div>
<footer class="flex items-center justify-end mb-24 mt-auto">
<button class="px-3 py-2 bg-gray-200 font-bold text-gray-700 mr-3">Cancel</button>
<ajax-button
class-list="px-3 py-2 bg-primary text-white font-bold"
:route=@{{SOMEHOW ACCESS MODAL DATA}}
method="delete">
Yes, leave account
</ajax-button>
</footer>
</div>
</div>
</modal>
在我的模式中,我有另一个名为 AjaxButton 的组件,它允许我拥有一个可重用的按钮来处理 ajax 请求。
我需要一种方法来访问传递给模态的模态数据。我不想创建一个额外的特定模式组件来处理这个。
这可能吗?
具体来说,:route 道具需要发送的是Account,因为我的路由需要模型绑定。即它看起来像/accounts/leave/53
编辑:
所以我可以这样做:
<button @click="$modal.hide('leave-account')" class="px-3 py-2 bg-gray-200 font-bold text-gray-700 mr-3">Cancel</button>
(就在我的<ajax-button>上方)
很明显,我可以访问$modal 属性/方法。所以必须有一种方法来完成我想要的
【问题讨论】:
标签: vue.js vue-js-modal