日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

分享HarmonyOS數(shù)據(jù)綁定使用技巧

電子工程師 ? 來源:HarmonyOS開發(fā)者 ? 作者:songcongyi ? 2021-05-27 15:19 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

相信各位應(yīng)用開發(fā)者在寫應(yīng)用的前端部分時,會遇到這樣的場景:通過某一事件觸發(fā)界面上某一內(nèi)容改變。比如說手表上心率數(shù)據(jù)的變化,是心率變化的事件觸發(fā)手表界面心率數(shù)據(jù)的改變??此坪唵蔚膱鼍?,實際上用到了“數(shù)據(jù)綁定”這一技術(shù)。

“事件”首先改變的是js中的一段文字對象,因js中的文字對象和標記語言的text組件里的文字內(nèi)容做了數(shù)據(jù)綁定,使得改變js文字對象的操作能夠令text組件里的文字內(nèi)容發(fā)生改變。

“數(shù)據(jù)綁定”是實現(xiàn)上述場景最基礎(chǔ)的技術(shù),本文會基于一系列實例詳細介紹”HarmonyOS數(shù)據(jù)綁定“的使用方法和技巧。

01

數(shù)據(jù)綁定概念

數(shù)據(jù)綁定,指的是將界面元素(View)的數(shù)據(jù)和對象實例(Model)的數(shù)據(jù)進行綁定,使它們具有相關(guān)性。

根據(jù)界面元素更新是否會引起對象實例的更新,數(shù)據(jù)綁定可分為單向數(shù)據(jù)綁定和雙向數(shù)據(jù)綁定。單向數(shù)據(jù)綁定指的是對象實例的數(shù)據(jù)更新會引起界面元素的更新,反之不行;雙向數(shù)據(jù)綁定指的是對象實例的數(shù)據(jù)更新會引起界面元素的數(shù)據(jù)更新,界面元素的數(shù)據(jù)更新也會引起對象實例的數(shù)據(jù)更新。

根據(jù)對象實例數(shù)據(jù)類型的不同,數(shù)據(jù)綁定又可分為簡單數(shù)據(jù)綁定和復(fù)雜數(shù)據(jù)綁定,簡單數(shù)據(jù)綁定數(shù)據(jù)為基本類型,而復(fù)雜數(shù)據(jù)綁定數(shù)據(jù)為列表類型。

1)HarmonyOS中的數(shù)據(jù)綁定

HarmonyOS目前支持單向數(shù)據(jù)綁定,即通過對象實例的數(shù)據(jù)更新來改變界面元素的數(shù)據(jù)。下面是Mustache語法數(shù)據(jù)綁定的通用寫法的代碼例子:

Hello {{title}}

/* index.js */import device from '@system.device';export default { data: { title : 'world', width: 0, height: 0, },onInit(){ // 根據(jù)設(shè)備設(shè)置窗口的寬高 device.getInfo({ success: (data)=> { this.width =data.windowWidth; this.height =data.windowHeight; } }); }}/* index.css */.container { flex-direction:column; justify-content:flex-start; align-items:flex-start;}

本文的代碼例子都會包含三個文件——元素構(gòu)建.hml、交互設(shè)計.js以及布局定義.css,只有.hml中可以寫數(shù)據(jù)綁定語法,請各位在閱讀時注意區(qū)分。下面來介紹HarmonyOS簡單數(shù)據(jù)綁定和復(fù)雜數(shù)據(jù)綁定。

02

HarmonyOS簡單數(shù)據(jù)綁定

HarmonyOS的簡單數(shù)據(jù)綁定支持“屬性綁定”、“樣式綁定”、“動畫綁定”和“內(nèi)容綁定”。樣式綁定和動畫綁定實際上是通過屬性標簽發(fā)揮作用的,下面我們詳細看一下具體使用過程。

1)屬性綁定

屬性可分為“通用屬性”和“特有屬性”,其中通用屬性包括id、style、for、if、show和class,特有屬性為各組件獨有的屬性如switch的checked。下面我們先看通用屬性show綁定switch顯示數(shù)據(jù)的代碼:

點擊藍色按鈕,代表觸發(fā)改變switch 中show屬性的“事件”,show屬性的值從“false”改變?yōu)椤皌rue”,switch組件(白色開關(guān)按鈕)會在界面上顯示出來。如圖1所示:

圖1 通用屬性show改變導(dǎo)致switch顯示改變

/*index.js*/import device from '@system.device';export default{ data:{ showValue:false, width:0, height:0,}, // showChange觸發(fā)會使showValue值改變 showChange(){ this.showValue =true; }, onInit(){ device.getInfo({ success:(data)=>{ this.width = data.windowWidth; this.height = data.windowHeight; } }); }}/* index.css */.input1 { width:40px; height:40px;}.switch{ width:90px; height:90px;}.container { flex-direction: column; justify-content: flex-start; align-items: flex-start;}

特有屬性是各個組件獨有的屬性,如switch中的checked。下面是switch中checked屬性數(shù)據(jù)綁定的用法:

點擊藍色按鈕,代表觸發(fā)改變switch 中checked屬性的“事件”,checked屬性的值從“false”改變?yōu)椤皌rue”,switch組件(白色開關(guān)按鈕)的狀態(tài)從“關(guān)”變成“開”。如圖2所示:

圖2 特有屬性checked改變導(dǎo)致switch狀態(tài)改變

/* index.js */importdevicefrom'@system.device';export default { data: { checkedValue: false, width: 0, height: 0, },//checkedChange觸發(fā)會使checkedValue值改變 checkedChange() { this.checkedValue = true; }, onInit() { device.getInfo({ success: (data) => { this.width = data.windowWidth; this.height = data.windowHeight; } }); }}/* index.css */.input1 { width: 40px; height: 40px;}.switch { width: 40px; height: 40px;}.container { flex-direction: column; justify-content: flex-start; align-items: flex-start;}

2)樣式綁定

樣式有靜態(tài)和動態(tài)之分,靜態(tài)樣式直接寫在元素標簽的關(guān)鍵字style中;動態(tài)樣式寫在.css文件中,通過關(guān)鍵字class引入。當(dāng)前動態(tài)樣式不支持數(shù)據(jù)綁定,數(shù)據(jù)綁定只能用在靜態(tài)樣式中,下面是switch靜態(tài)樣式寬高的數(shù)據(jù)綁定用法:

點擊藍色按鈕,代表觸發(fā)改變switch 中靜態(tài)樣式寬高改變的“事件”,靜態(tài)樣式寬高的值從“40px”改變?yōu)椤?0px”,switch組件(白色開關(guān)按鈕)的寬高變大。如圖3所示:

圖3 通用樣式寬高改變導(dǎo)致switch組件大小改變

/* index.js */importdevicefrom'@system.device';export default { data: { rectValue: '40px', width: 0, height: 0, },//rectChange觸發(fā)會使rectValue值改變 rectChange() { this.rectValue = '90px'; }, onInit() { device.getInfo({ success: (data) => { this.width = data.windowWidth; this.height = data.windowHeight; } }); }}/* index.css */.input1 { width: 40px; height: 40px;}.switch { width: 40px; height: 40px;}.container { flex-direction: column; justify-content: flex-start; align-items: flex-start;}

3)動畫綁定

動畫效果可以通過靜態(tài)樣式中的關(guān)鍵字animation-name改變。我們可以在.css文件中創(chuàng)建多種keyframes的動畫效果,通過animation-name改變keyframes,以實現(xiàn)動畫效果的切換,下面是一個例子:

點擊藍色按鈕,這是代表觸發(fā)改變div 中動畫效果的"事件",animation-name的值從“animationChange1”改變?yōu)椤癮nimationChange2”,div組件動效從顏色變化動效變成寬度變化動效。如圖4所示:

圖4 animation-name改變導(dǎo)致動畫樣式改變

/*index.js*/import device from '@system.device';export default { data: { animationName: 'animationChange1', width: 0, height: 0, }, //animationChange觸發(fā)會使animationName值改變 animationChange() { this.animationName ="animationChange2"; }, onInit() { device.getInfo({ success: (data) => { this.width = data.windowWidth; this.height = data.windowHeight; } }); }}/* index.css */.input1 { width: 40px; height: 40px;}.div-block { width: 200px; height: 80px; background-color: #ff0000;}.div-animation-style{ animation-duration: 3000ms; animation-timing-function: linear; animation-fill-mode: none; animation-iteration-count: 1;}.container { flex-direction: column; justify-content: flex-start; align-items: flex-start;}/* 初始動畫效果改變背景顏色 */@keyframes animationChange1 { from { background-color: #ff0000; } to { background-color: #0000ff; }}/* 切換后動畫效果改變?yōu)榉綁K寬度變化 */@keyframes animationChange2 { from { width: 200px; } to { width: 250px; }}

4)內(nèi)容綁定

除了屬性、樣式和動畫綁定,HarmonyOS一些特殊組件如text,其標簽內(nèi)容中可以添加數(shù)據(jù)綁定,具體使用方法如下:

點擊藍色按鈕,代表觸發(fā)改變text 中文字內(nèi)容的“事件”,text組件中文字內(nèi)容從“Hello World”改變?yōu)椤癏ello Bob”,界面顯示的文字相應(yīng)改變。如圖5所示:

圖5 文字數(shù)據(jù)改變導(dǎo)致text中的文字內(nèi)容改變

Hello {{ title }}
/*index.js*/import device from '@system.device';export default { data: { title: 'World', width: 0, height: 0, },//titleChange觸發(fā)會使text中的title值改變 titleChange() { this.title = 'Bob'; }, onInit() { device.getInfo({ success: (data) => { this.width = data.windowWidth; this.height = data.windowHeight; } }); }}/* index.css */.input1 { width: 40px; height: 40px;}.title { width: 100px; height: 100px; font-size: 20px; text-align: center;}.container { flex-direction: column; justify-content: flex-start; align-items: flex-start;}

簡單數(shù)據(jù)綁定中,通用屬性基本都支持數(shù)據(jù)綁定,如style、if和show中綁定的對象數(shù)據(jù)改變都會使相應(yīng)的View改變并刷新,只有class不支持數(shù)據(jù)綁定。同時,id雖然支持數(shù)據(jù)綁定,但其綁定的對象數(shù)據(jù)改變實際上只修改了DOM,不會對View有影響。

03

HarmonyOS復(fù)雜數(shù)據(jù)綁定

當(dāng)數(shù)據(jù)綁定的對象為列表(數(shù)組)時,與for搭配使用,可以實現(xiàn)通過for展開多個組件(即列表渲染),減少.hml重復(fù)寫組件。復(fù)雜數(shù)據(jù)綁定和列表渲染是強相關(guān)的,我們可以先了解一下HarmonyOS應(yīng)用開發(fā)中如何用for屬性做列表渲染。

1)列表渲染

參考HarmonyOS官網(wǎng)的開發(fā)文檔:

https://developer.harmonyos.com/cn/docs/documentation/doc-references/lite-wearable-syntax-hml-0000001078368468

我們可以看到列表渲染主要有三種方式:

for="array":其中array為數(shù)組對象,array的元素變量默認為$item。

for="v in array":其中v為自定義的元素變量,元素索引默認為$idx。

for="(i, v) in array":其中元素索引為i,元素變量為v,遍歷數(shù)組對象array。

這三種方式的實現(xiàn)代碼為:

{{$idx}}.{{$item.name}}
{{$idx}}.{{value.name}}
{{index}}.{{value.name}}
//index.jsexport default { data: { array: { {id: 1, name: 'jack', age: 18}, {id: 2, name: 'tony', age: 18} } }}

2)通用屬性的復(fù)雜數(shù)據(jù)綁定

下面以靜態(tài)style屬性為例,將style和數(shù)組進行數(shù)據(jù)綁定,可以通過改變數(shù)組的數(shù)據(jù)讓組件樣式改變,具體使用方法如下:

點擊藍色按鈕,代表觸發(fā)改變與數(shù)組綁定的某switch組件寬高的“事件”,第二個switch靜態(tài)樣式寬高的值從“40px”改變?yōu)椤?0px”,switch組件(白色開關(guān)按鈕)的寬高變大。如圖6所示:

圖6 綁定靜態(tài)樣式的數(shù)組改變導(dǎo)致switch寬高改變

/*index.js*/import device from '@system.device';export default { data: {//定義兩個寬高相等的switch rectArr: [ {"width": "40px","height": "40px"}, {"width": "40px","height": "40px"} ], width: 0, height: 0, },//改變第二個switch大小 switchChange() { this.rectArr[1].width = "90px"; this.rectArr[1].height = "90px"; }, // 推薦使用splice方法改變switch大小 // switchChange() { // this.rectArr.splice(1, 1, {"width": "90px", "height": "90px"}); //} onInit() { device.getInfo({ success: (data) => { this.width = data.windowWidth; this.height = data.windowHeight; } }); }}/* index.css */.input1 { width: 40px; height: 40px;}.container { flex-direction: column; justify-content: flex-start; align-items: flex-start;}

然而,有一些屬性不支持復(fù)雜數(shù)據(jù)綁定,例如, if屬性和swiper組件的loop屬性等。他們的對象數(shù)據(jù)改變,都無法改變相應(yīng)的view層顯示效果,具體組件的數(shù)據(jù)綁定支持情況可以查閱官方開發(fā)文檔。

04

總結(jié)

HarmonyOS簡單數(shù)據(jù)綁定,可以支持“屬性綁定”、“樣式綁定”、“動畫綁定”和“內(nèi)容綁定”。HarmonyOS復(fù)雜數(shù)據(jù)綁定支持情況和簡單數(shù)據(jù)綁定支持情況相同。對于諸多組件中存在的特有屬性的復(fù)雜數(shù)據(jù)綁定支持情況,歡迎各位開發(fā)者參與驗證。最后概括HarmonyOS數(shù)據(jù)綁定的使用技巧:

1. HamonyOS僅支持單向的數(shù)據(jù)綁定,語法為Mustache;

2. 在簡單數(shù)據(jù)綁定場景下,style、if和show及特有的屬性都會刷新View的顯示;

3. 在簡單數(shù)據(jù)綁定場景下,靜態(tài)樣式中的animation-name更改會刷新View的動畫效果;

4. 在簡單數(shù)據(jù)綁定場景下,text等組件的內(nèi)容綁定更改會刷新View的顯示;

5. 在復(fù)雜數(shù)據(jù)綁定場景下,數(shù)據(jù)綁定的支持情況和簡單數(shù)據(jù)綁定相同,推薦使用splice方法對數(shù)據(jù)內(nèi)容進行增刪;

以下思維導(dǎo)圖概括了該版本下HarmonyOS數(shù)據(jù)綁定的支持情況。

5f397af0-beb9-11eb-9e57-12bb97331649.jpg

圖7 HarmonyOS數(shù)據(jù)綁定全貌圖

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7349

    瀏覽量

    95057
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4977

    瀏覽量

    74420
  • HarmonyOS
    +關(guān)注

    關(guān)注

    80

    文章

    2157

    瀏覽量

    36321

原文標題:HarmonyOS數(shù)據(jù)綁定使用技巧

文章出處:【微信號:HarmonyOS_Dev,微信公眾號:HarmonyOS開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    2025 HarmonyOS Connect伙伴峰會暨軟通動力分論壇圓滿落幕

    9月26日,HarmonyOS Connect伙伴峰會在深圳盛大召開,匯聚行業(yè)先鋒,共探鴻蒙智聯(lián)產(chǎn)品生態(tài)發(fā)展新路徑。軟通動力作為HarmonyOS Connect核心供應(yīng)商受邀參會,并成功舉辦
    的頭像 發(fā)表于 09-29 15:35 ?1099次閱讀

    時序約束管腳綁定不成功問題

    {[新手提問]: 關(guān)于引腳綁定問題}在綁定vivado引腳中時,選項中沒有原理圖可綁定的引腳,需要綁定的引腳在l/O Bank88,但是我需要綁定
    發(fā)表于 08-21 17:18

    如何確定PSoC? Creator 中綁定數(shù)據(jù)的行/位置?

    十六進制轉(zhuǎn)儲的比較可以看出,粘合數(shù)據(jù)似乎存儲在第 389 行和第 391 行。 有幾個問題。 那么,是否有適當(dāng)?shù)男衼肀Wo引導(dǎo)加載程序 0-388? 如何確定PSoC? Creator 中綁定數(shù)據(jù)的行/位置? 我可以設(shè)置粘合數(shù)據(jù)
    發(fā)表于 07-22 07:58

    HarmonyOS 5】鴻蒙應(yīng)用隱私保護詳解

    、聊天、記錄生活,不知不覺中,大量個人信息都存儲在了移動設(shè)備里。但你有沒有想過,如果這些隱私數(shù)據(jù)泄露了會怎樣?從接到詐騙電話,到遭遇身份盜用,后果可能不堪設(shè)想。好在,HarmonyOS早就為我們的隱私安全做好了全方位的防護。 想象一下,你的健康
    的頭像 發(fā)表于 07-11 18:30 ?1435次閱讀

    HarmonyOS 5】鴻蒙中進度條的使用詳解

    HarmonyOS 5】鴻蒙中進度條的使用詳解 ##鴻蒙開發(fā)能力 ##HarmonyOS SDK應(yīng)用服務(wù)##鴻蒙金融類應(yīng)用 (金融理財# 一、HarmonyOS中Progress進度條的類型
    的頭像 發(fā)表于 07-11 18:26 ?1320次閱讀
    【<b class='flag-5'>HarmonyOS</b> 5】鴻蒙中進度條的使用詳解

    HarmonyOS 5】鴻蒙星閃NearLink詳解

    HarmonyOS 提供的短距離通信服務(wù),支持星閃設(shè)備間的連接、數(shù)據(jù)交互。例如,手機可作為中心設(shè)備與外圍設(shè)備(如鼠標、手寫筆、智能家電、車鑰匙等)通過星閃進行連接。 二、NearLink Kit 的接入
    的頭像 發(fā)表于 07-11 18:24 ?2076次閱讀
    【<b class='flag-5'>HarmonyOS</b> 5】鴻蒙星閃NearLink詳解

    HarmonyOS 5】金融應(yīng)用開發(fā)鴻蒙組件實踐

    HarmonyOS 5】金融應(yīng)用開發(fā)鴻蒙組件實踐 ##鴻蒙開發(fā)能力 ##HarmonyOS SDK應(yīng)用服務(wù)##鴻蒙金融類應(yīng)用 (金融理財# 一、鴻蒙生態(tài)觀察 2024 年 1 月 18 日: 發(fā)布
    的頭像 發(fā)表于 07-11 18:20 ?1158次閱讀
    【<b class='flag-5'>HarmonyOS</b> 5】金融應(yīng)用開發(fā)鴻蒙組件實踐

    HarmonyOS 5 入門系列 】鴻蒙HarmonyOS示例項目講解

    框架的技術(shù)變革 在移動操作系統(tǒng)的發(fā)展歷程中,UI 開發(fā)模式經(jīng)歷了從 命令式到聲明式 的重大變革。 根據(jù)華為開發(fā)者聯(lián)盟 2024 年數(shù)據(jù)報告顯示,HarmonyOS 設(shè)備激活量已突破 7.3 億臺,其中
    的頭像 發(fā)表于 07-07 11:57 ?1221次閱讀
    【 <b class='flag-5'>HarmonyOS</b> 5 入門系列 】鴻蒙<b class='flag-5'>HarmonyOS</b>示例項目講解

    HarmonyOS入門指南

    1、文檔與教程 HarmonyOS開發(fā)文檔-應(yīng)用開發(fā)導(dǎo)讀 OpenHarmony--應(yīng)用開發(fā)導(dǎo)讀 倉頡編程語言官網(wǎng) 華為開發(fā)者博客 華為開發(fā)者問答專區(qū) 華為生態(tài)市場-鴻蒙生態(tài)市場
    的頭像 發(fā)表于 06-27 00:11 ?939次閱讀

    請問OpenVINO? 是否支持 Rust 綁定

    無法確定OpenVINO?是否支持 Rust 綁定。
    發(fā)表于 06-25 07:45

    HarmonyOS 5 makeObserved接口詳解

    HarmonyOS 5】makeObserved接口詳解 ##鴻蒙開發(fā)能力 ##HarmonyOS SDK應(yīng)用服務(wù)##鴻蒙金融類應(yīng)用 (金融理財# 一、makeObserved接口
    的頭像 發(fā)表于 06-16 17:58 ?810次閱讀

    HarmonyOS 5】鴻蒙中的UIAbility詳解(三)

    HarmonyOS 5】鴻蒙中的UIAbility詳解(三) ##鴻蒙開發(fā)能力 ##HarmonyOS SDK應(yīng)用服務(wù)##鴻蒙金融類應(yīng)用 (金融理財# 一、前言 本文是鴻蒙中的UIAbility
    的頭像 發(fā)表于 06-14 22:32 ?898次閱讀

    HarmonyOS5云服務(wù)技術(shù)分享--云數(shù)據(jù)庫使用指南

    ? 華為云數(shù)據(jù)庫(CloudDB)在HarmonyOS中的使用指南 ? ??嗨,開發(fā)者朋友們!?? 今天咱們來聊聊華為云數(shù)據(jù)庫(CloudDB)在HarmonyOS應(yīng)用中的集成和使用技
    發(fā)表于 05-22 18:29

    HarmonyOS5云服務(wù)技術(shù)分享--ArkTS開發(fā)Node環(huán)境

    ,復(fù)雜任務(wù)建議拆分為異步任務(wù),使用隊列處理。 ? 實際應(yīng)用場景 ??動態(tài)內(nèi)容渲染??:為HarmonyOS元服務(wù)(Meta Service)提供實時數(shù)據(jù)。 ??Webhook集成??:接收GitHub
    發(fā)表于 05-22 17:21

    HarmonyOS5云服務(wù)技術(shù)分享--賬號關(guān)聯(lián)開發(fā)指南

    功能,用戶可以用手機、郵箱、華為賬號等多種方式登錄,還能自由綁定或解綁賬號,讓用戶管理更便捷! ? 為什么要做賬號關(guān)聯(lián)? 想象一下,用戶先用手機號注冊了你的App,后來想換成郵箱登錄,但又不想丟失原有數(shù)據(jù)
    發(fā)表于 05-22 16:53
    新源县| 吉隆县| 湖北省| 龙江县| 资溪县| 昂仁县| 昆山市| 广水市| 高州市| 通化县| 融水| 瓮安县| 新津县| 绍兴市| 苏尼特左旗| 舟山市| 宜君县| 仙居县| 天柱县| 肃北| 宁波市| 台中县| 石狮市| 德昌县| 弥勒县| 留坝县| 峨边| 通道| 融水| 禄劝| 阳高县| 邮箱| 琼结县| 竹溪县| 宁安市| 桓台县| 南涧| 平邑县| 宜宾市| 龙山县| 民勤县|