Router

Introduce

可使用如下方式调用router方法:

1
2
3
4
5
6
import bpui from 'bpui.js';

bpui.libs.router.push(...);
// 等同于如下代码.
this.$router.push(...);

router接口如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
type Directory<T> = { [key: string]: T };
type Location = {path: string, query?: Directory<string>, state?: Directory<any> };

/**
* router接口. (仅需提供如下接口)
*/
interface IRouter {

/**
* 历史记录长度 (length名称在ie下不可重定义,故使用pageLength).
*/
pageLength:number;

/**
* 当前的路由信息.
*/
currentRoute: bp.Location;

/**
* 路由控制. 可由trigger指定是否触发routeChanged通知.
*/
push( path: string ) : void;
push( path: string, trigger:boolean ) : void;
push( location: Location ) : void;
push( location: Location, trigger:boolean ) : void;
replace( path: string ) : void;
replace( path: string, trigger:boolean ) : void;
replace( location: Location ) : void;
replace( location: Location, trigger:boolean ) : void;
back() : void;
forward() : void;
go(n: number) : void;

/**
* 获得对应location的一个页面组件. (返回的是组件类, 而非创建出来的实例)
* @return 明确返回false表明匹配不到路由.
*/
getMatchedComponent(
location: Location,
/**
* 加载完成.
* 如果是异步加载,在生成完成时, 可以调用onLoaded将加载完成的组件回传, 下次加载时,将直接返回加载后的组件.
*/
onLoad:(component:any, onLoaded?:(component:any)=>void)=>void,
/** 匹配不到指定的路由组件. */
onError:(err:Error)=>void
): void|false;

/**
* 路由改变事件.
* type 表示路由切换的标记.
* 1: 表示是replace.
*/
on(eventType:'routeChanged', handler:(to:bp.Location, type?:number)=>void) : void;
off(eventType:'routeChanged', handler?:(to:bp.Location, type?:number)=>void) : void;
}

设置第三方router

可以使用以下方式设置自定义实现的router.

1
bpui.libs.setupRouter(router: IBPRouter);