# script 脚本

手机 手表

用来定义页面数据和实现生命周期接口

# 语法

支持 ES6 语法

# 模块声明

可以通过 import 引入功能模块,在代码中调用模块方法(具体参看接口部分文档说明)

import fetch from '@system.fetch'
1

# 代码引用

JS 代码引用推荐使用 import 来导入, 例如:

import utils from '../Common/utils.js'
1

注意: 快应用环境不是 node 环境,不要引用 node 原生模块,如 import fs from 'fs'

# 对象

# 页面级组件

属性 类型 描述
data Object | Function 页面级组件的数据模型,能够转换为 JSON 对象;属性名不能以$或_开头, 不要使用 for, if, show, tid 等保留字
如果是函数,返回结果必须是对象,在组件初始化时会执行函数获取结果作为 data 的值
使用 data 方式声明的属性会被外部数据覆盖,因此存在一定安全风险。

# 自定义组件

属性 类型 描述
data Object | Function 自定义组件的数据模型,能够转换为 JSON 对象;属性名不能以$或_开头, 不要使用 for, if, show, tid 等保留字
如果是函数,返回结果必须是对象,在组件初始化时会执行函数获取结果作为 data 的值
props Array | Object 定义组件外部可传入的所有属性;属性名不能以$或_开头, 不要使用 for, if, show, tid 等保留字
在模板代码中,请使用短横线分隔命名代替驼峰命名。如,属性定义 props: ['propA'],可通过<tag prop-a='xx'>方式传递到组件内部
支持 prop 验证 1010+

# 公共对象

卡片中不能访问 app、page,app.ux 不会加载

# 方法

# 公共方法

属性 类型 参数 描述
$element Function id: String 组件 id 获取指定 id 的组件 dom 对象,如果没有指定 id,则返回根组件 dom 对象用法:<template> <div id='xxx'></div> </template> this.$element('xxx') 获取 id 为 xxx 的 div 组件实例对象 this.$element() 获取根组件实例对象

# 事件方法

属性 类型 参数 描述
$watch Function data: String 属性名, 支持'a.b.c'格式,不支持数组索引
handler: String 事件句柄函数名, 函数的第一个参数为新的属性值,第二个参数为旧的属性值
动态添加属性/事件绑定,属性必须在 data 中定义,handler 函数必须在<script>定义;当属性值发生变化时事件才被触发用法:this.$watch('a','handler')

# 生命周期

# 支持

onInit、onReady、onShow、onHide、onDestroy

# 不支持

onBackPress、onMenuPress、onRefresh

# 消息通道

卡片中不支持BroadcastChannel

# 外部参数获取

定义在 data 中的同名外部变量会在初始化时自动被赋值,例如链接为hap://widget/包名/path?cardData=hello%E5%BF%AB%E5%BA%94%E7%94%A8,则代码中的可以如此使用

<script>
  export default {
  data: {
    cardData: ‘’
  },
  onInit () {
    this.cardData = decodeURIComponent(this.cardData)
    // 初始化类型为字符串, 此例中,编码采用的是encodeURIComponent
    // 解码采用decodeURIComponent还原为“hello快应用”
    // 使用中可根据实际业务的编码需求采用相对应的解码方式
  }
}
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13