在后台开发中,经常使用到Modal和Drawer,尤其是Drawer用的很多很多,比如一些添加和编辑操作,就使用Drawer来呈现表单。
<Drawer
title="角色设置" // 设置Drawer的标题
v-model="roleCountUpdate" // 绑定的值用来表示是否显示这个Drawer
width="50%" // 宽度占整屏幕的50%
:mask-closable="true"
:styles="roleDrawerStyles" // 一些样式
>
<RoleSetting @hideHandle="drawerHided" :roleId="selectedRole.id"></RoleSetting> // 子组件
</Drawer>
用的也不难,可以说是最基本的了
<Drawer
:title="'价格设置 产品名称:' + productName"
v-model="priceSetting"
width="50%"
:mask-closable="true"
:styles="drawerStyles"
>
<component // 动态组件
:is="currentTabComponent" // 值是需要渲染的子组件的名字
:goodsId="selectedProduct.productId" // 向子组件传递的值
@hideHandle="drawerHided"
></component>
</Drawer>
动态组件的需求是,通过点击一个按钮判断拿到的值是何种类型,从而渲染某个组件,这里子组件接收值得时候遇到了问题,就是监听不到从父组件传来的值,同时监听不到第一次传递的值。进而找到了深度监听
至于对话框Modal,一般是用来弹出一个窗口,执行某个操作,例如,在一个列表展示的页面中,需要修改制定的某个属性,在点击按钮后弹出对话框,对话框中进行修改操作。
<Modal v-model="roleChange" class-name="vertical-center-modal"> // v-model绑定的值,用来显示对话框
<p slot="header" style="text-align:center">
<span>角色设置</span>
</p>
<Select v-model="roleKey" style="width:200px" placeholder="请选择角色">
<Option v-for="item in roleItems" :value="item.role_key" :key="item.id">{{ item.name }} </Option>
</Select>
<div slot="footer">
<Button size="small" @click="roleChange=false">取消</Button>
<Poptip //气泡组件的使用是为了进一步确认,可以有返回的余地
confirm
placement="right"
title="是否确认修改?"
@on-ok="getRoleUpdate"> // 当点击确认的时候执行的函数
<Button type="primary" size="small">确定</Button>
</Poptip>
</div>
</Modal>