之前写过一篇关于vue实现对话框会话框组件的文章https://www.jb51.net/article/139218.htm
,讲到了如何实现一个vue对话框组件,其中涉及到了父组件和子组件的通信,这个不用多说,看我之前的文章就能明白,文章最后也说到了,我们可以使用槽插槽来编写组件,槽用来分发内容到子组件中,从而实现组件的高度复用,编写的组件更加灵活。
还是结合对话框的例子,使用槽来实现对话框组件
注册一个名叫dialog-tip的全局组件
Vue.component (dialog-tip, { 模板:“# dialog-tip”, 道具:“dialogShow”、“消息”, 数据:函数(){ 返回{ 内容:“ } }, 方法:{ } });
使用模板标签来定义这个组件
& lt;模板id=癲ialog-tip”比; & lt; div类=v=癲ialogShow”比“dialog_tip”; & lt; div class=" dialog_tip——面具”在& lt;/div> & lt; div类=癲ialog_tip——内容”比; & lt; div类=癲ialog_tip——content__txt”比; & lt;槽的名字=拔毒弊4乔胧淙? - 8000之间任意整数& lt;/slot> & lt;/div> & lt; div类=癲ialog_tip——content__btns”比; & lt; slot> & lt;按钮类=" btn "祝辞确定& lt;/button> & lt;按钮类=" btn "祝辞重新输入& lt;/button> & lt;按钮类=" btn "祝辞去注册& lt;/button> & lt;/slot> & lt;/div> & lt;/div> & lt;/div> & lt;/template> & lt;模板id=癲ialog-tip”比; & lt; div类=v=癲ialogShow”比“dialog_tip”; & lt; div class=" dialog_tip——面具”在& lt;/div> & lt; div类=癲ialog_tip——内容”比; & lt; div类=癲ialog_tip——content__txt”比; & lt;槽的名字=拔毒弊4乔胧淙? - 8000之间任意整数& lt;/slot> & lt;/div> & lt; div类=癲ialog_tip——content__btns”比; & lt; slot> & lt;按钮类=" btn "祝辞确定& lt;/button> & lt;按钮类=" btn "祝辞重新输入& lt;/button> & lt;按钮类=" btn "祝辞去注册& lt;/button> & lt;/slot> & lt;/div> & lt;/div> & lt;/div> & lt;/template>
组件内容包括两部分,一个是提示内容,一个是按钮按钮,我们将要修改替换的内容使用槽包含起来,
,这样父组件就可以分发内容到子组件里面了。
& lt; div类=癲ialog_tip——content__txt”比; & lt;槽的名字=拔毒弊4乔胧淙? - 8000之间任意整数& lt;/slot> & lt;/div> & lt; div类=癲ialog_tip——content__btns”比; & lt; slot> & lt;按钮类=" btn "祝辞确定& lt;/button> & lt;按钮类=" btn "祝辞重新输入& lt;/button> & lt;按钮类=" btn "祝辞去注册& lt;/button> & lt;/slot> & lt;/div>
除了默认插槽,还可以定义具名插槽,如果组件中有好几个部分内容需要替换,我们可以为它定义一个名称,例如:
<代码> & lt;槽name=拔毒弊4乔胧淙? - 8000之间任意整数& lt;/slot> 代码>
这样在使用组件的时候,指定槽的名字,就会将这一部分内容替换掉,而不会替换其他的插槽内容
<代码> & lt; p槽=拔毒弊4乔胧淙胝肥只? lt;/p> 代码>
使用定义好的对话框组件
=& lt; dialog-tip消息“hello”: dialog-show=癲ialogShow.tip3”比; & lt; p槽=拔毒弊4乔胧淙胝肥只? lt;/p> & lt;按钮类=癰tn @click”=癱loseDialogTip(一句话)“祝辞确定& lt;/button> & lt;/dialog-tip>=& lt; dialog-tip消息“hello”: dialog-show=癲ialogShow.tip4”比; & lt; p槽=拔毒弊4潜?没有此用户,请核实后输入& lt;/p> & lt;按钮类=癰tn @click”=癱loseDialogTip (tip4)”在重新输入& lt;/button> & lt;按钮类=癰tn @click”=白⒉帷钡脑谌プ⒉? lt;/button> & lt;/dialog-tip>
如果不指定槽的名称,默认dialog-tip标签里面的内容会替换子组件中使用槽包含的内容部分,例如以上
使用槽指定了它的名称来替换子组件中的对应的槽部分,而没有使用槽指定名称的内容会默认将子组件中
,没有定义具名插槽的部分内容替换掉。
需要注意的是,如果dialog-tip标签里没有定义需要分发的内容,那么子组件中会显示默认的插槽内容
关于更多的槽用法,请移步https://cn.vuejs.org/v2/guide/components-slots.html