script 脚本
更新时间:
用来定义页面数据和实现生命周期接口
语法
支持 ES6 语法
模块声明
可以通过 import 引入功能模块,在代码中调用模块方法(具体参看功能接口部分文档说明)
import fetch from '@system.fetch'
代码引用
JS 代码引用推荐使用 import 来导入, 例如:
import utils from '../Common/utils.js'
注意: vivo 手表环境不是 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'> 方式传递到组件内部 |
公共对象
属性 | 类型 | 描述 |
---|---|---|
$app | Object | 应用对象 |
$page | Object | 页面对象 |
$valid | Boolean | 页面对象是否有效 |
$device | { deviceType: string } | 获取当前设备类型。watch-square :方形手表,watch-round :圆形手表 |
应用对象
可通过$app
访问
属性 | 类型 | 描述 |
---|---|---|
$def | Object | 使用this.$app.$def 获取在app.ux 中暴露的对象 |
方法
公共方法
属性 | 类型 | 参数 | 描述 |
---|---|---|---|
$element | Function | id: String 组件 id | 获取指定 id 的组件调用来对应的组件方法 |
$set | Function | key: String 属性名称 value: Any |
添加数据属性,用法:this.$set('key',value) |
事件方法
属性 | 类型 | 参数 | 描述 |
---|---|---|---|
$watch | Function | data: String 属性名, 支持'a.b.c'格式,不支持数组索引 handler: String 事件句柄函数名, 函数的第一个参数为新的属性值,第二个参数为旧的属性值 |
动态添加属性/事件绑定,属性必须在 data 中定义,handler 函数必须在<script> 定义;当属性值发生变化时事件才被触发用法:this.$watch('a','handler') |
应用方法
可通过$app
访问
属性 | 类型 | 参数 | 描述 |
---|---|---|---|
exit | Function | 无 | 退出 vivo 手表,结束应用生命周期。 调用方法: this.$app.exit() |
该 feature 依赖 system.app
, 请确保在 manifest.json
中引入
页面方法
可通过$page
访问
属性 | 类型 | 参数 | 描述 |
---|---|---|---|
setStopGestureQuit | Function | Number | 是否屏蔽手势返回,1 - 屏蔽。0 - 不屏蔽。 调用方法: this.$page.setStopGestureQuit(1) |
该 feature 依赖 system.router
, 请确保在 manifest.json
中引入
生命周期
页面生命周期
onInit
监听页面初始化。当页面完成初始化时调用,只触发一次
onReady
监听页面创建完成。当页面完成创建可以显示时触发,只触发一次
参数
无
onShow
监听页面显示。当进入页面时,或者当前页面被弹框覆盖时触发
参数
无
onHide
监听页面隐藏。当页面跳转离开时,或者覆盖当前页面的弹框消失时触发
参数
无
onDestroy
监听页面退出。当页面跳转离开(不进入导航栈)时触发
参数
无
onBackPress()
监听返回动作。当用户执行返回操作时触发。只有当前页面配置了 followHand : disable,该接口才生效。
参数
无
返回值
类型 | 描述 |
---|---|
Boolean | 返回 true 表示页面自己处理返回逻辑,返回 false 表示使用默认的返回逻辑,不返回值会作为 false 处理; 注意:该函数不支持声明为异步函数(即:使用async 标识),因为返回值代表界面要立即响应用户操作; |
onRefresh
监听页面重新打开。
1.当页面在 manifest 中 launchMode 标识为'singleTask'时,仅会存在一个目标页面实例,用户多次打开目标页面时触发此函数。
该回调中参数为重新打开该页面时携带的参数。
详见页面启动模式
参数
参数名 | 类型 | 描述 |
---|---|---|
query | Object | 通过 deeplink、router.push 等接口传入的 uri 中 query 解析成的对象,或者 router.push 等接口传入的 params 对象 |
onKey
监听按键响应。当按键被触发时回调
参数
参数名 | 类型 | 描述 |
---|---|---|
event | Object | 被触发的按键事件 |
event 参数
参数名 | 类型 | 描述 |
---|---|---|
keyCode | Number | 按下的键位,0:下键(电源键),1:上键 |
keyAction | Number | 按下或弹起的动作 0:按下 1:短按弹起 2:长按弹起 |
repeatCount | Number | 连续按的次数,按键在长按的时候,会连续产生多个按下事件,这个时候第一个按下事件的 repeatCount 为 0,之后的按下事件 repeatCount 会递增。 |
示例代码:
onKey(event) {
console.log(`key pressed! ${JSON.stringify(event)}`);
console.info(`触发页面生命周期 onKey`)
}
onConfigurationChanged
监听系统语言改变
参数
参数名 | 类型 | 描述 |
---|---|---|
event | Object | 应用配置发生变化的事件 |
event 参数:
参数名 | 类型 | 描述 |
---|---|---|
type | String | 应用配置发生变化的原因类型,支持的 type 值如下所示 |
event 中type
现在支持的参数值如下:
参数值 | 描述 |
---|---|
locale | 应用语言、地区变化而发生改变 |
示例代码:
onConfigurationChanged(evt) {
if (event && event.type && event.type === 'locale') {
console.log('locale or language changed!')
}
}
onPalmOver
监听手掌覆盖事件
参数
无
返回值
true
表示不将事件继续传递给 launcher,其他值或者不返回都会将事件继续传递给 launcher。
示例代码:
onPalmOver(evt) {
console.info(`大手掌事件 onPalmOver`)
return true;
}
页面的生命周期接口的调用顺序
- 打开页面 A:onInit() -> onReady() -> onShow()
- 在页面 A 打开页面 B:onHide()
- 从页面 B 返回页面 A:onShow()
自定义组件的生命周期
自定义组件,指的是通过 import 标签引入的 ViewModel 组件
属性 | 类型 | 参数 | 返回值 | 描述 | 触发时机 |
---|---|---|---|---|---|
onInit | Function | 无 | 无 | 监听初始化 | 当数据驱动化完成时触发 |
onReady | Function | 无 | 无 | 监听模板创建完成 | 当模板创建完成时触发 |
onDestroy | Function | 无 | 无 | 监听组件销毁 | 当销毁时触发 |
应用生命周期
onCreate()
监听应用创建,应用创建时调用
参数
无
onDestroy()
监听应用销毁,应用销毁时调用
参数
无
app.ux 对象的属性
app.ux 对象指的是:开发者在app.ux
中<script>
节点内要导出的对象