国产chinesehdxxxx野外,国产av无码专区亚洲av琪琪,播放男人添女人下边视频,成人国产精品一区二区免费看,chinese丰满人妻videos

快應(yīng)用 script腳本

2020-08-10 15:01 更新

用來定義頁面數(shù)據(jù)和實現(xiàn)生命周期接口

語法


支持 ES6 語法

模塊聲明

可以通過 import 引入功能模塊,在代碼中調(diào)用模塊方法(具體參看接口部分文檔說明)

import fetch from "@system.fetch"

代碼引用

JS 代碼引用推薦使用 import 來導(dǎo)入, 例如:

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

注意: 快應(yīng)用環(huán)境不是 node 環(huán)境,不要引用 node 原生模塊,如 import fs from 'fs'

對象


頁面級組件

屬性類型描述
data deprecatedObject | Function頁面級組件的數(shù)據(jù)模型,能夠轉(zhuǎn)換為 JSON 對象;屬性名不能以$或_開頭, 不要使用 for, if, show, tid 等保留字
如果是函數(shù),返回結(jié)果必須是對象,在組件初始化時會執(zhí)行函數(shù)獲取結(jié)果作為 data 的值
使用 data 方式聲明的屬性會被外部數(shù)據(jù)覆蓋,因此存在一定安全風險,推薦使用下面的 public,protected,private 來聲明屬性(注意:它們不能與 data 同時聲明)
public 1000+Object頁面級組件的數(shù)據(jù)模型,影響傳入數(shù)據(jù)的覆蓋機制:public 內(nèi)定義的屬性允許被傳入的數(shù)據(jù)覆蓋,如果外部傳入數(shù)據(jù)的某個屬性未被聲明,在 public 中不會新增這個屬性
protected 1000+Object頁面級組件的數(shù)據(jù)模型,影響傳入數(shù)據(jù)的覆蓋機制:protected 內(nèi)定義的屬性,允許被應(yīng)用內(nèi)部頁面請求傳遞的數(shù)據(jù)覆蓋,不允許被應(yīng)用外部請求傳遞的數(shù)據(jù)覆蓋
private 1000+Object頁面級組件的數(shù)據(jù)模型,影響傳入數(shù)據(jù)的覆蓋機制:private 內(nèi)定義的屬性不允許被覆蓋
computed 1050+Object計算屬性,屬性名不能以$或_開頭, 不要使用 for, if, show, tid 等保留字

自定義組件

屬性類型描述
dataObject | Function自定義組件的數(shù)據(jù)模型,能夠轉(zhuǎn)換為 JSON 對象;屬性名不能以$或_開頭, 不要使用 for, if, show, tid 等保留字
如果是函數(shù),返回結(jié)果必須是對象,在組件初始化時會執(zhí)行函數(shù)獲取結(jié)果作為 data 的值
propsArray | Object定義組件外部可傳入的所有屬性;屬性名不能以$或_開頭, 不要使用 for, if, show, tid 等保留字
在模板代碼中,請使用短橫線分隔命名代替駝峰命名。如,屬性定義 props: ['propA'],可通過<tag prop-a='xx'>方式傳遞到組件內(nèi)部
支持 prop 驗證 1010+
computed 1050+Object計算屬性,屬性名不能以$或_開頭, 不要使用 for, if, show, tid 等保留字

prop 驗證

在自定義組件中,可將 props 定義為帶驗證需求的對象。其中,key 為屬性名,value 為屬性對應(yīng)的驗證需求。驗證失敗則輸出錯誤提示日志,增加 prop 驗證有利于規(guī)范自定義組件的使用

定義:

屬性類型描述
type 1010+-檢查屬性值的類型。支持單一類型和多種可能類型,可在原生和自定義構(gòu)造函數(shù)中任意選擇,單獨或組合使用
  • 原生構(gòu)造函數(shù):String | Number | Boolean | Function | Object | Array | Symbol
  • 自定義構(gòu)造函數(shù)
default 1010+-設(shè)置屬性的默認值
required 1010+Boolean設(shè)置屬性是否必填
validator 1010+Function設(shè)置自定義驗證函數(shù)。若函數(shù)的返回值為真,則通過驗證;否則驗證失敗

示例:

<script>
  export default {
    props: {
      // 單一類型檢查的簡寫
      propA: Number,
      // 多種可能類型的簡寫
      propB: [String, Number],
      // 必填的字符串
      propC: {
        type: String,
        required: true
      },
      // 帶默認值的數(shù)字
      propD: {
        type: Number,
        default: 100
      },
      // 帶有默認值的對象
      propE: {
        type: Object,
        default () {
          return { message: 'hello' }
        }
      },
      // 自定義驗證函數(shù)
      propF: {
        validator (value) {
          return value === 'hello'
        }
      }
    }
  }
</script>

計算屬性 1050+

  • 類型:{ [key: string]: Function | { get: Function, set: Function } }
  • 詳細:計算屬性將被混入到 Vm 實例中。所有 getter 和 setter 的 this 上下文自動地綁定為 Vm 實例。計算屬性的結(jié)果會被緩存,除非依賴的響應(yīng)式屬性變化才會重新計算。注意,如果某個依賴 (比如非響應(yīng)式屬性) 在該實例范疇之外,則計算屬性是不會被更新的。

示例:

export default {
  data: {
    firstName: 'Quick',
    lastName: 'App'
  },
  computed: {
    fullName: {
      get() {
        return `${this.firstName} ${this.lastName}`
      },
      set(value) {
        const names = value.split(' ')
        this.firstName = names[0]
        this.lastName = names[names.length - 1]
      }
    }
  },
  onReady() {
    console.log(this.fullName) // Quick App
    this.fullName = 'John Doe'
    console.log(this.firstName) // John
    console.log(this.lastName) // Doe
  }
}

公共對象

屬性 類型 描述
$app Object 應(yīng)用對象
$page Object 頁面對象
$valid Boolean 頁面對象是否有效
$visible Boolean 頁面是否處于用戶可見狀態(tài)

應(yīng)用對象

可通過$app訪問

屬性 類型 描述
$def Object 使用this.$app.$def獲取在app.ux中暴露的對象
$data Object 使用this.$app.$data獲取在manifest.jsonconfig.data中聲明的全局數(shù)據(jù)

頁面對象

可通過$page訪問

屬性 類型 描述
action String 獲取打開當前頁面的action。僅在當前頁面是通過filter匹配的方式打開時有效,否則為undefined。參見manifest文件
uri String 獲取打開當前頁面的uri。僅在當前頁面是通過filter匹配的方式打開時有效,否則為undefined。參見manifest文件

方法


數(shù)據(jù)方法

屬性 類型 參數(shù) 描述
$set Function key: String
value: Any
添加數(shù)據(jù)屬性,必須在onInit函數(shù)中使用,否則<template>中數(shù)據(jù)綁定無法生效用法:this.$set('key',value) this.$vm('id').$set('key',value)
$delete Function key: String 刪除數(shù)據(jù)屬性,如果在onInit函數(shù)中使用,會導(dǎo)致<template>中相應(yīng)的數(shù)據(jù)綁定無法生效用法:this.$delete('key') this.$vm('id').$delete('key')

公共方法

屬性 類型 參數(shù) 描述
$element Function id: String 組件id 獲取指定id的組件dom對象,如果沒有指定id,則返回根組件dom對象用法:<template> <div id='xxx'></div> </template> this.$element('xxx') 獲取id為xxx的div組件實例對象 this.$element() 獲取根組件實例對象
$root Function 獲取頂層ViewModel
$parent Function 獲取父親ViewModel
$child Function id: String 組件id 獲取指定id的自定義組件的ViewModel用法:this.$child('xxx') 獲取id為xxx的div組件ViewModel
$vm deprecated Function id: String 組件id 請使用上面this.$child('xxx')替代
$rootElement deprecated Function 請使用上面this.$element()替代
$forceUpdate Function 強制頁面刷新

事件方法

屬性 類型 參數(shù) 描述
$on Function type: String 事件名
handler: Function 事件句柄函數(shù)
添加事件處理句柄用法:this.$on('xxxx', this.fn) fn是在<script>中定義的函數(shù)
$off Function type: String 事件名
handler: Function 事件句柄函數(shù)
刪除事件處理句柄用法:this.$off('xxxx', this.fn) this.$off('xxx') 刪除指定事件的所有處理句柄
$dispatch Function type: String 事件名 向上層組件發(fā)送事件通知用法:this.$dispatch('xxx')正常情況下,會一直向上傳遞事件(冒泡)如果要停止冒泡,在事件句柄函數(shù)中調(diào)用evt.stop()即可
$broadcast Function type: String 事件名 向子組件發(fā)送事件通知用法:this.$broadcast('xxx')正常情況下,會一直向下傳遞事件如果要停止傳遞,在事件句柄函數(shù)中調(diào)用evt.stop()即可
$emit Function type: String 事件名
data: Object 事件參數(shù)
觸發(fā)事件,對應(yīng)的句柄函數(shù)被調(diào)用用法:this.$emit('xxx') this.$emit('xxx', {a:1})傳遞的事件參數(shù)可在事件回調(diào)函數(shù)中,通過evt.detail來訪問,例如evt.detail.a
$emitElement Function type: String 事件名
data: Object 事件參數(shù)
id: String 組件id (默認為-1 代表根元素)
觸發(fā)組件事件, 對應(yīng)的句柄函數(shù)被調(diào)用用法:this.$emitElement('xxx', null, 'id') this.$emitElement('xxx', {a:1})傳遞的事件參數(shù)可在事件回調(diào)函數(shù)中,通過evt.detail來訪問,例如evt.detail.a
$watch Function data: String 屬性名, 支持'a.b.c'格式,不支持數(shù)組索引
handler: String 事件句柄函數(shù)名, 函數(shù)的第一個參數(shù)為新的屬性值,第二個參數(shù)為舊的屬性值
動態(tài)添加屬性/事件綁定,屬性必須在data中定義,handler函數(shù)必須在<script>定義;當屬性值發(fā)生變化時事件才被觸發(fā)用法:this.$watch('a','handler')

頁面方法

可通過$page訪問

屬性 類型 參數(shù) 描述
setTitleBar Function text: String 標題欄文字
textColor: String 文字顏色
backgroundColor: String 背景顏色
backgroundOpacity 正式版本可用: Number 背景透明度
menu 正式版本可用: Boolean 是否在標題欄右上角顯示菜單按鈕
設(shè)置當前頁面的標題欄用法:this.$page.setTitleBar({text:'Hello', textColor:'#FF0000', backgroundColor:'#FFFFFF', backgroundOpacity:0.5, menu: true})

生命周期接口


頁面生命周期

屬性 類型 參數(shù) 返回值 描述 觸發(fā)時機
onInit Function 監(jiān)聽頁面初始化 當頁面完成初始化時調(diào)用,只觸發(fā)一次
onReady Function 監(jiān)聽頁面創(chuàng)建完成 當頁面完成創(chuàng)建可以顯示時觸發(fā),只觸發(fā)一次
onShow Function 監(jiān)聽頁面顯示 當進入頁面時觸發(fā)
onHide Function 監(jiān)聽頁面隱藏 當頁面跳轉(zhuǎn)離開時觸發(fā)
onDestroy Function 監(jiān)聽頁面退出 當頁面跳轉(zhuǎn)離開(不進入導(dǎo)航棧)時觸發(fā)
onBackPress Function Boolean 監(jiān)聽返回按鈕動作 當用戶點擊返回按鈕時觸發(fā)。返回true表示頁面自己處理返回邏輯,返回false表示使用默認的返回邏輯,不返回值會作為false處理
onMenuPress Function 監(jiān)聽菜單按鈕動作 當用戶點擊菜單按鈕時觸發(fā)

頁面的生命周期接口的調(diào)用順序:

  • 打開頁面A:onInit() -> onReady() -> onShow()
  • 在頁面A打開頁面B:onHide()
  • 從頁面B返回頁面A:onShow()
  • A頁面返回:onBackPress() -> onHide() -> onDestroy()

應(yīng)用生命周期

屬性 類型 參數(shù) 返回值 描述 觸發(fā)時機
onCreate Function 監(jiān)聽應(yīng)用創(chuàng)建 當應(yīng)用創(chuàng)建時調(diào)用
onDestroy Function 監(jiān)聽應(yīng)用銷毀 當應(yīng)用銷毀時觸發(fā)

消息通道(BroadcastChannel) 正式版本可用

用來實現(xiàn)不同頁面之間的相互通信。

接口說明

在BroadcastChannel的構(gòu)造函數(shù)中,只支持接受一個參數(shù),就是"頻道名稱"(channel name)

比如:

const test = new BroadcastChannel('channel')

BroadcastChannel 定義的接口如下:

declare interface BroadcastChannel = {
  name: string,
  postMessage: (message: any) => void;
  onmessage: (event: MessageEvent) => void;
  close: () => void;
}

消息對象(MessageEvent)的類型定義如下:

declare interface MessageEvent = {
  type: string, // "message"
  data: any
}

對參數(shù)的說明:

名稱 類型 參數(shù) 描述
name String String:頻道名稱 頻道名稱,區(qū)分不同的消息頻道(注意:不同頻道之間不可通信)。
postMessage Function Object: 消息內(nèi)容 用于在當前頻道中廣播消息。
onmessage Function Event:消息對象 訂閱消息。在頻道中接收到廣播消息之后,會給所有訂閱者派發(fā)消息事件。
close Function 關(guān)閉當前的頻道。

用法

假設(shè)在我們的應(yīng)用中,有A、B、C三個頁面

在頁面 A 中:

const pageA = new BroadcastChannel('channel1')
pageA.postMessage('haha!')

在頁面 B 中:

const pageB = new BroadcastChannel('channel1')

在頁面 C 中:

const pageC = new BroadcastChannel('channel1')
pageC.onmessage = function (event) {
  console.log(event.data)
  pageC.postMessage('hello, i am here!')
}

這樣,頁面 A 、B 、C 都創(chuàng)建一個監(jiān)聽了 'channel1' 頻道的 BroadcastChannel 對象,它們之間可以通過這個對象實現(xiàn)互相通信。

當 pageA 發(fā)布了 'haha!' 消息時,pageC 將收到一個消息事件,其 data 字段等于 'haha!',然后也向頻道中回復(fù)一條消息。注意:自己不會收到自己發(fā)的消息。

但是 pageB 并不會收到這些消息,因為他沒有實現(xiàn)onmessage 方法,相當于沒有接收頻道中的消息,所以他實際上不是一個訂閱者。

注意:在pageA銷毀channel當前不與頁面context進行上下文綁定,需要主動關(guān)閉消息通道,如下所示:

const pageA = new BroadcastChannel('tom')
pageA.close();


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號