# `ld-page-tabs`标签页组件
## 效果图

## `ld-page-tabs` 参数
> `ld-page-tabs` 只有简单的几个参数
|关键字|类型|解释|默认值|是否必须|说明|
|-|-|-|-|-|-|
|tabs|Array[Object]|关键字||√|组件代码具体的使用代码[组件代码](##`ld-page-tabs`tabs的属性)|
|showClose|Boolean|是否显示关闭按钮|true|√||
|showRefresh|Boolean|是否显示刷新按钮|true|√||
|showConfirm|Boolean|标签页关闭时,是否显示提示框|true|||
|closeBefore|Function(item)|标签关闭之前事件,true,false控制是否继续执行!||||
|refreshTabBefore|Function(item)|标签关闭之前事件,true,false控制是否继续执行!||||
|passEventUp|Boolean|是否向上传递事件|true||详细说明见[页面事件向上传递](##页面事件向上传递约定)|
|selected|String\|Number|选中的tab|||为tab下标时必须是Number,不是下标则需要设置为要显示的tab的prop值|
## `ld-page-tabs` tabs 的属性
> ld-page-tabs `tabs` 是一组对象的集合,其中对象属性如下:
|关键字|类型|解释|默认值|是否必须|说明|
|-|-|-|-|-|-|
|prop|String|关键字||√||
|label|String|标签页显示文字||√||
|page|String|组件代码\|网页地址(网页地址必须具备http://或https://)||√|组件代码具体的使用代码[组件代码](##ld-page-tabs组件代码)|
|showRefresh|Boolean|是否显示刷新按钮|||通过参数控制,实现特殊需求|
|showClose|Boolean|是否显示关闭按钮|||通过参数控制,实现特殊需求|
>参数里边可以包含其他属性
## ld-page-tabs 组件代码
> 组件代码是指,在使用页面中,通过将页面注册为组件,之后使用``
> 标签动态加载页面内容。通常在后台管理系统中,会使用到标签页,此时,通过将页面注册成组件进行使用。
> 具体示例如下:
- 在`main.js`(也可单独使用一个js文件,通过导出`vue 的install方法`)中引入页面,并注册成组件
```javascript
import HelloWorld from '@/pages/HelloWorld'
import formChange from '@/pages/forms-change.vue'
import test1 from '@/pages/test1'
import test2 from '@/pages/test2'
import test3 from '@/pages/test3'
import test4 from '@/pages/test4'
import saveForms from '@/pages/saveFormTest.vue'
import table from '@/pages/table.vue'
import menuTree from '@/pages/menuTree.vue'
import pageTabs from '@/pages/pageTabs.vue'
Vue.component('hello-world', HelloWorld);
Vue.component('form-Change', formChange);
Vue.component('test1', test1);
Vue.component('test2', test2);
Vue.component('test3', test3);
Vue.component('test4', test4);
Vue.component('save-forms', saveForms);
Vue.component('table', table);
Vue.component('menu-tree', menuTree);
```
- 组件注册之后我们就可以进行标签页面的配置和使用
```javascript
//...
data(){
return {
tabs:[
{prop:'1',page:'hello-world',label:'HelloWord'},
{prop:'2',page:'form-Change',label:'联动'},
{prop:'3',page:'test1',label:'测试1'},
{prop:'4',page:'test2',label:'测试2'},
{prop:'5',page:'test3',label:'测试3'},
{prop:'6',page:'test4',label:'测试4'},
{prop:'7',page:'save-forms',label:'form表单和表格'},
{prop:'8',page:'table',label:'表格'},
{prop:'9',page:'menu-tree',label:'菜单树'},
]
}
}
//..
```
## Event 事件
|名称|类型|返回值|解释|说明|
|-|-|-|-|-|
|click|Function(item)||标签页点击事件|当点击标签页时,触发事件。|
|close|Function(item)||关闭标签页后发生事件|当关闭标签页后,触发事件。|
|refresh|Function(item)||更新标签页后击事件|更新标签页后,触发事件。|
## Slot 插槽(作用域插槽)
|名称|类型|插槽入参|说明|
|-|-|-|-|
|page|作用域插槽|item {} 一个tab元素对象值|使用此插槽意味着你需要自己完成页面相关的显示和操作|
## 页面事件向上传递约定
> 在将页面作为组件进行标签页操作时,有时需要在将页面内部操作传递到标签页外部以便进行其他关操作,此时便需要使用固定的格式进行事件传递
- 设置 `passEventUp = true` 向上传递
-- 在页面中使用如下代码
```javascript
//向上传递事件名称必须是event,参数必须具备eventMethod和eventParam
this.$emit('events',{eventMethod:'click',eventParam:{}});
```
此时在`ld-page-tabs`页面中处理函数使用如下代码
```html
```
```javascript
//....
getEvent(event){
//处理 相关事件
}
//...
```
- 设置 `passEventUp = false` 不向上传递数据,此时事件则会散播
-- 在页面中使用如下代码
```javascript
//向上传递事件名称必须是event,参数必须具备eventMethod和eventParam
this.$emit('events',{eventMethod:'click',eventParam:{}});
```
此时在`ld-page-tabs`页面中处理函数使用如下代码
```html
```
```javascript
//....
getEvent(event){
//这里的 event则为eventParam的值
//处理 相关事件
}
//...
```