视图选项

概述

视图选项,是 View.js 支持的第二种数据传导方式。 与视图参数不同的是,视图选项的传导媒介,是地址栏。其地址栏表现形态如下所示:

http://domain:port/context/path/to/html#view-id@view-namespace!option1=value1&option2=value2...

其中,option1option2 即为视图选项。

开发者同样只能在 视图跳转 时指定视图选项。但支持指定视图选项的视图跳转 API 只包括:

  1. View.navTo()

  2. View.changeTo()

参数赋值

视图选项的赋值,同时支持使用 js 传导来进行 和 使用 html 传导来进行。

对于 js 传导,使用预留关键字:options 在跳转指令中指定,例如:

/**
 * 以“替换栈顶”的方式跳转至 mall 命名空间下, ID为 goods-detail 的视图。
 *
 * 第一个和第二个参数指定了跳转目标;
 * 第三个参数指定了跳转控制选项,其中,关键字:'options' 用于指定视图选项集合。
 */
View.changeTo("goods-detail", "mall", {
    /**
     * 视图选项只支持字符串类型
     */
    options: {
        paramName1: "boo"
        paramName2: "bar"
    }
});

对于 html 传导,在 data-view-rel 指令中,使用 ! 符号追加至跳转目标后即可,例如:

参数获取

由于视图选项的传导媒介是地址栏,而地址栏只能表达出当前活动视图的信息,所以开发者只能获取到当前活动视图所关联的视图选项。

用于获取当前活动视图的视图选项的API为:

  1. View.hasActiveViewOption(name: string): boolean 判断视图选项中是否含有特定名称的参数

  2. View.getActiveViewOption(name: string): null|string 获取视图选项中特定名称的参数

  3. View.getActiveViewOptions(): null|Object<string, string> 获取视图选项描述的参数集合

例如:

circle-exclamation

参数更新

部分情况下,开发者需要响应用户的操作,更新地址栏中的视图选项。对此,View.js 提供了API:View.setActiveViewOption(name: string, value: string) 来应对。例如:

与 视图参数 的对比

由于视图选项是通过地址栏传导的,并且只能检索当前活动视图关联的视图选项,所以视图选项在如下几个方面与视图参数有所不同:

  1. 参数个数受浏览器地址栏长度限制

  2. 参数类型只能是 string 类型

  3. 参数在页面刷新后仍然可以检索到

  4. 参数在浏览器前进或后退时自动恢复

更智能的参数检索方法

为简化开发者的参数检索工作,View.js 提供了一个更智能的参数检索API:View.seekParameter(name: string)

该方法如下方式工作:

  1. 尝试从 视图参数 中检索同名参数,有则返回,没有则执行步骤2;

  2. 尝试从 视图选项 中检索同名参数,有则返回,没有则执行步骤3;

  3. 尝试从 queryString 中 检索同名参数,有则返回对应的取值,没有则返回 null

例如:

Last updated