NavbarView
Introduce
1 | import bpui from 'bpui.js'; |
navbarView 组件用于对app页面进行导航功能, 可以设置页面堆栈的大小, 以便存储浏览过的页面;
navbarView是一个单例对象, 全局只能有一个navbarView. 可以使用api进行控制, 而无需使用 ref.
navbarView提供了插件, 注入了变量
$navbar
可以用来调用导航组件方法.
history导航模式
为记录路由导航, 在history状态中使用参数 `_` 表示当前的导航标记. 如果项目需要使用名称为_的history状态, 可以设置属性`seqName` 指定另外一个名称.
内部使用`history`模式路由导航, 支持IE10及以上浏览器
使用时会覆盖vue-router的相关方法, 项目不能安装vue-router, 否则无法启动;
可以使用vue-router的一些方法, 如: `$router`, `$route`, `router-link`;
路由改变监控 IRouter.on(‘routeChanged’)
可以使用基础库中的路由方法来监控路由变化
可使用全局方法设置配置
1 |
|
props
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
cacheSize | number | 最大的页面层级, 将保留的page dom个数. (默认为无限制, 初次设置之后修改无效) | |
rootRoutePath | string | 初始页面的路径 (如果不指定, 则默认为 / ; (初次设置之后修改无效) ) |
|
rootRouteParams | Object | 初始页面的参数 (初次设置之后修改无效) | |
pageClass | string 或 array | 导航视图页面的样式类名或类名数组 | |
pageBgColor | string | 页面背景颜色 | |
pageAnimation | string | 默认转场动画的类名; 内部提供的有: -slide 左右切换 -fade 渐变 -lift 上下 -‘’ 无动画(默认) |
|
appMode | boolean | 表明是否为app模式, app模式路由的最上层为rootRoutePath; 否则为浏览器正常history; (默认为false, 初次设置之后修改无效) | |
scrollToAnchorBehavior | ‘instant’ 或 ‘smooth’ | 使用 router-link 或 方法跳转到如 to=’#xxx’ 的anchor时的页面滚动行为. 默认为 smooth. |
导航条相关属性
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
containStatusBar | boolean | 是否包含状态栏. (ios webapp模式为true, 其他默认为false). | |
barTextColor | string | 导航条左右按钮文本颜色 | |
barTitleColor | string | 导航条标题文本颜色 | |
barBgColor | string | 导航条背景色 | |
barHidden | boolean | (微信浏览器中忽略这个值; 其他默认为false) 导航栏隐藏状态 | |
backIconComponent | Component | 定义返回按钮的图标; |
加载组件属性
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
errorComponent | Component | 加载错误时显示的组件; | |
loadingComponent | Component | 加载页面时显示的组件; | |
loadingDelay | number | 延迟显示加载页面; 默认为200 | |
loadingTimeout | number | 加载组件的超时时间; 默认为 Infinity |
特别属性
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
seqName | string | 为记录路由而使用的地址查询参数名.(只能指定一次,动态修改无效) |
指定container样式.
需要对页面最外层container指定样式时, 可以使用下列方式
1 | <navbarView pageClass="containerClass"></navbarView> |
可以通过pageClass属性传递容器类名类名数组设置最外层样式.
events
名称 | 描述 |
---|---|
hiddenChanged(event):void | 导航条隐藏改变事件. |
除事件外, 页面组件还可以定义如下的方法, 导航组件将在适当时触发.
名称 | 描述 |
---|---|
viewAppear(popData:any):void | 页面显示, popData 为页面pop传递回来的数据. (对navbar的信息设置请写在此方法内). |
viewDisappear():void | 页面即将消失. |
viewClickLeftItem():boolean | 点击左侧按钮触发; 如果明确返回false, 则不进行默认回退处理. |
viewClickRightItem():void | 点击右侧按钮触发. |
在viewWillAppear
方法中调用navbar相关方法设置navbar时, 设置的状态只会作用于当前的页面; 而所有导航页面的默认状态由navbarView组件创建时的属性和样式决定
页面滚动
1 | // 页面平滑滚动用: |
内置动画类型
1 | type AnimateType = 'slide'|'slideOut'|'fade'|'fadeOut'|'lift'|'liftOut'|'none'|string, |
- 使用
none
或 ‘’, 表示无动画; Out
结尾表示回退动画.- 除预设动画外, 可以自定义转场动画; 按如下实例定义slide动画样式类:
1 | /** |
methods
setBarHiddenForce
1 | /** |
setBarInfo
1 | /** |
getBarInfo
1 | /** |
setBarLeftItem
1 | /** |
setBarRightItem
1 | /** |
push
1 | /** |
可以使用 bpui.setNavbarDefaultCfg(..)
接口设置默认的retainPage行为.
routerLink
除使用方法进行导航外, 还可以使用 router-link
组件;
系统对 router-link进行了重写; 总体兼容, 但做了一些修改:
- router-link 不支持active-class,exact-active-class属性; tag属性仅能为’a’
- 在项目中使用router-link将会正确导航且触发默认动画.
to
属性可以不是必选back
: 增加了一个属性back:Boolean
表示是否回退. (back比to优先)data
: 增加了一个属性data:any
表示页面切换时附带的数据. (将在传递到 viewAppear 中)animate
: 增加一个animate:String
属性表示情景切换时的动画.
例如
1 | <router-link to="/page1" animate="slide" data="附带的数据">跳转</router-link> |
pop
回退操作可以指定一个 data
数据, 回退时, 前一个页面的 viewAppear
方法将传递这个数据.
1 | /** |
replace
1 | /** |
自定义navbar
提供名为navbar
的组件实现自定义navbar
1 | <navbar> |
自定义navbar可以放置在任意位置, 但只有最后一个navbar会生效;
使用自定义的navbar后, 依然可以使用 setBarInfo({hidden:true})
api进行bar的显示控制.
双向绑定问题
使用自定义navbar时, 自定义内容必须如果未包含在一个元素内时将无法响应内容改变, 如:
1 | <navbar> |
str变化时, 界面无法响应改变;
需要将内容,至少包裹在一个元素内以能够双向绑定,如:
1 | <navbar> |
自定义主题
图标
组件中使用到的图标名称都是以 bp-navbar_
开头, 使用到的图标有:
图标名称 | 描述 |
---|---|
bp-navbar_arrowLeft | 返回按钮 |
bp-navbar_loading | 默认加载组件中的加载图标 |
可以使用bpui.icons.registerSvgIcon('bp-navbar_arrowLeft', <svg file>)
方式, 进行组件图标自定义
样式结构
组件的样式结构如下:
1 | .bp-navbarView { |
scss样式文件存放在@bpui/navbar-view/style
目录下, 可以复制修改以定制主题