# 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
2
3
4
5
6
7
8
9
10
11
12
13
←
→
