视图参数

View.js 支持 视图参数 和 视图选项 两种数据传递媒介。本文将介绍第一种传递媒介:视图参数。

概述

视图参数,是借助内存传导的,用于在视图之间交换数据,实现跨页面协作的数据传递媒介。

开发者只能在 视图跳转 时指定视图参数。支持指定视图参数的视图跳转 API 包括:

  1. View.navTo()

  2. View.changeTo()

  3. View.back()

  4. View.forward()

视图参数只能使用 js 传导,不能使用 html 指令传导。

参数赋值

视图参数在跳转指令中使用预留关键字:params 指定,例如:

/**
 * 以“压入堆栈”的方式跳转至 default 命名空间下, ID为 targetVieWId 的视图
 *
 * 第一个参数指定了跳转目标;
 * 第二个参数指定了跳转控制选项,其中,关键字:'params' 用于指定视图参数集合。
 */
View.navTo("targetViewId", {

    /**
     * 开发者可以在视图参数集合指定任意数量的参数,参数取值可以是
     * 任意合法的js类型
     */
    params: {
        paramName1: "boo",/* 传导字符串 */
        paramName2: true,/* 传导枚举值 */
        paramName3: ['str', 123, false, new Object()],/* 传导数组 */
        paramName4: View.find(".container"),/* 传导DOM元素 */
        paramName5: function(data){doSth(data);}/* 传导回调方法 */
    }
});

参数检索

View.js 提供了如下 API 以供开发者检索视图参数:

  1. view.hasParameter(name: string): boolean 用于判断视图参数中是否含有指定名称的参数

  2. view.getParameter(name?: string): null|any 获取视图参数中指定名称的参数取值。如果没有指定参数名,则返回整个参数集合。

例如:

需要注意的是,视图离开后,getParameter() 方法仍然可以获取到最后一次传入的参数。但重新进入视图时,再次调用将获取到新传入的参数。

如果再次进入时,程序不便于提供参数,此时开发者将得到 null 。对此,开发者可以手动将其存放至 视图上下文 中,然后从上下文中检索。例如:

由于上述场景是开发者经常遇到的,为简化开发工作,View.js 自 v1.6.3 版本开始默认支持有效视图参数的自动保存(至上下文),结合 view.seekParameter() 方法,开发者无需再手动存取。

参阅方法: 1. view.setIfAutoSaveParamsToContext() 2. view.seekParameter()

回调方法

开发者可以借助视图参数传递任意类型的参数,包括 Funtion,以实现更灵活的页面协作,例如:“选择收货地址”。

实现思路为:

  1. 用户在 “确认订单” 页面点击 “收货人” 时,界面跳转至 “收货地址列表”,并传递回调方法:“用户点选特定收货地址时要执行的方法”,方法内部实现用户选择的收货地址的渲染等

  2. “收货地址列表” 界面监听用户对 “收货地址” DOM 元素的点击事件,并在点击时执行收到的回调方法,并将DOM元素关联的收货地址信息传递进去

代码如下:

Last updated

Was this helpful?