chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

如何用JS UI框架的List組件畫一個(gè)表格?

HarmonyOS開(kāi)發(fā)者 ? 來(lái)源:HarmonyOS開(kāi)發(fā)者 ? 作者:九弓子 ? 2021-07-01 10:42 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文作者:九弓子

前端最討厭的事:需要閱讀同事封裝的各種奇怪組件

前端最喜歡的事:分分鐘封裝一個(gè)自定義組件

對(duì)于以上描述,你是否也有同感?本期我們?yōu)榇蠹規(guī)?lái)的是開(kāi)發(fā)者“九弓子”投稿的“如何用JS UI框架的List組件畫一個(gè)表格”。

作者通過(guò)List組件快速、高效地構(gòu)建了一個(gè)自定義表格。接下來(lái),讓我們一起見(jiàn)證作者是如何遇到問(wèn)題,解決問(wèn)題,最終實(shí)現(xiàn)開(kāi)發(fā)目標(biāo)的。希望能給你的HarmonyOS開(kāi)發(fā)之旅帶來(lái)一些啟發(fā)~

在敲代碼之前,需要大家下載安裝“Huawei DevEco Studio”,安裝指南如下:● Huawei DevEco Studio安裝指南:

https://developer.harmonyos.com/cn/docs/documentation/doc-guides/software_install-0000001053582415

1

前端總會(huì)遇到一種需求 -- 自己畫

不是因?yàn)榇蠹蚁雽懡M件,而是因?yàn)殡S著各種千奇百怪網(wǎng)頁(yè)需求的出現(xiàn),即便是繁榮如Web的生態(tài),框架也不夠用。更不用說(shuō)咱們剛剛出生沒(méi)多久的HarmonyOS手機(jī)應(yīng)用開(kāi)發(fā)。表格是頁(yè)面中最常用的組件之一,那么如何在JS UI為主的HarmonyOS應(yīng)用中書寫一個(gè)表格呢。既然沒(méi)有三方框架加持,我們就先拋離css美化的問(wèn)題,用List組件做一個(gè)極簡(jiǎn)表格:

2

制作頁(yè)面之前,先確定幾件事

在開(kāi)發(fā)HarmonyOS 的JS UI頁(yè)面之前,先要確定這么幾件事。

1) 是否有我們可以利用的組件?

HarmonyOS的JS開(kāi)發(fā)不是Web開(kāi)發(fā),雖然二者寫法很像,但不是一回事。

2) 不要嘗試去找官方文檔沒(méi)有寫的html標(biāo)簽。

官方提供的標(biāo)簽本身就是組件的另一種體現(xiàn)。

3) 頁(yè)面本身沒(méi)有Scroll滾動(dòng)。

如果你書寫的頁(yè)面超出屏幕,且外層沒(méi)有List組件,是無(wú)法滑動(dòng)屏幕的。

基于以上問(wèn)題,我們通常會(huì)先寫了一個(gè)容器(效果如圖1所示),在外層寫一個(gè)list標(biāo)簽負(fù)責(zé)Y軸縱向的滾動(dòng)。再寫一個(gè)id為table的div,并且給它一個(gè)邊框,之后的表格將在這個(gè)div內(nèi)繪制。

《!--hml--》《div class=“container”》 《!--外層的這個(gè)list組件負(fù)責(zé)Y軸縱向滾動(dòng)--》 《list》 《list-item》 《!--寫了一個(gè)id為table的div--》 《div id=“table”》《/div》 《/list-item》 《/list》《/div》

/*css*/.container { padding: 10px;}#table { width: 100%; height: 500px; border: 1px solid #000;/*給table設(shè)置了邊框*/}

這時(shí)就能在圖1中看到一個(gè)方塊:

3

制作過(guò)程

1)確定思路因?yàn)槭謾C(jī)寬度有限,表格過(guò)大的話,就需要橫向滾動(dòng)。所以,我們后面還需要繼續(xù)在內(nèi)層寫入一個(gè) list 組件用來(lái)負(fù)責(zé)X軸橫向的滾動(dòng)。

2)確定數(shù)據(jù)結(jié)構(gòu)

表格數(shù)據(jù)結(jié)構(gòu),是可視化的二維數(shù)組,如下所示:

//jsexport default { data: { //table_data就是我們要制作的表格數(shù)據(jù) table_data:[ [“日期/時(shí)間”,“2020-12-16”,“2020-12-16”,“2020-12-16”,“2020-12-16”,“2020-12-16”,“2020-12-16”], [“表頭1”,“10.10”,“15.36”,“58.00”,“66.41”,“20.21”,“22.00”], [“表頭2”,“10.10”,“15.36”,“58.00”,“66.41”,“20.21”,“22.00”], [“表頭3”,“10.10”,“15.36”,“58.00”,“66.41”,“20.21”,“22.00”], [“表頭4”,“10.10”,“15.36”,“58.00”,“66.41”,“20.21”,“22.00”], [“表頭5”,“10.10”,“15.36”,“58.00”,“66.41”,“20.21”,“22.00”], [“表頭6”,“10.10”,“15.36”,“58.00”,“66.41”,“20.21”,“22.00”], [“表頭7”,“10.10”,“15.36”,“58.00”,“66.41”,“20.21”,“22.00”] ] }}

為了開(kāi)啟橫向滾動(dòng)屬性,hml代碼中新增了id為table-row的list組件,并且寫入了一個(gè)style。新增了一個(gè)for語(yǔ)句,通過(guò)for語(yǔ)句循環(huán)獲取tabledata里的每個(gè)數(shù)組,還新增了span item,用于數(shù)據(jù)綁定。運(yùn)行效果如圖2所示:

《!--hml--》《div class=“container”》 《list》 《list-item》 《div id=“table”》 《!--新增了一個(gè)id為table-row的list組件,并寫入了一個(gè)Style--》 《list id=“table-row” style=“flex-direction: row;”》 《!--通過(guò)for語(yǔ)句循環(huán)獲取table data里的每個(gè)數(shù)組--》 《list-item for=“(index,item) in table_data”》 《div》 《text》 《!--數(shù)據(jù)綁定,注意此處綁定的是item,后文會(huì)改成綁定item中的value--》 《span》{{ item }}《/span》 《/text》 《/div》 《/list-item》 《/list》 《/div》 《/list-item》 《/list》《/div》

通過(guò)發(fā)現(xiàn),頁(yè)面的數(shù)組全擠在了一起,為了解決這個(gè)問(wèn)題,接下來(lái)我們需要把最內(nèi)層的文本輸出賦予更多css樣式。

4)表格樣式設(shè)計(jì)

首先,給予X軸橫向list內(nèi)部每一個(gè)list-item一個(gè)寬度,讓它們撐開(kāi)超出屏幕寬度,自然就可以順利滾動(dòng)。然后,給予內(nèi)部文本的div一個(gè)邊框,讓它們看起來(lái)更像一個(gè)表格,運(yùn)行后效果如圖3所示:

《!--hml--》《div class=“container”》 《list》 《list-item》 《div id=“table”》 《list id=“table-row” style=“flex-direction: row;”》 《!--給list內(nèi)部每個(gè)list-item設(shè)定一個(gè)寬度30%,讓它們撐開(kāi)超出屏幕寬度--》 《list-item for=“(index,item) in table_data” style=“width: 30%;”》 《!--給內(nèi)部文本的div一個(gè)邊框,讓它看起來(lái)像個(gè)表格--》 《div style=“border: 1px solid #000;width: 100%;”》 《!--文本排列:居中--》 《text style=“text-align: center;”》 《span》{{ item }}《/span》 《/text》 《/div》 《/list-item》 《/list》 《/div》 《/list-item》 《/list》《/div》

通過(guò)發(fā)現(xiàn),橫向滾動(dòng)已實(shí)現(xiàn),但這個(gè)表格是按照一維數(shù)組輸出的,只輸出了每個(gè)item。接下來(lái)新增一個(gè)for語(yǔ)句,使數(shù)據(jù)的輸出為item里面的value值。我們?cè)俳o內(nèi)層的div加一個(gè)flex彈性換行 ,最后我們?cè)賹懸粋€(gè)Css樣式最常用的Flex彈性布局,讓文本的輸出真正按照二維數(shù)組來(lái)輸出。運(yùn)行效果圖如圖4所示:

《!--hml--》《div class=“container”》 《list》 《list-item》 《div id=“table”》 《list id=“table-row” style=“flex-direction: row;”》 《list-item for=“(index,item) in table_data” style=“width: 30%;”》 《div class=“row”》 《!--新增了一個(gè)for語(yǔ)句,使數(shù)據(jù)的輸出為item里面的value值--》 《div for=“value in item” class=“col”》 《text》 《!--這里的數(shù)據(jù)綁定是value值,前文代碼中一直都是item--》 《span》{{ value }}《/span》 《/text》 《/div》 《/div》 《/list-item》 《/list》 《/div》 《/list-item》 《/list》《/div》

/*css*/.container { padding: 10px;}#table { width: 100%; height: 500px; border: 1px solid #000;}//設(shè)定彈性布局.row { display: flex ; flex-direction:row; flex-wrap:wrap;}.col { width: 100%; height: 60px; border: 1px solid #000;}

我們目標(biāo)中的表,但如果數(shù)據(jù)增多,Y軸無(wú)法就滾動(dòng)查看。這是因?yàn)槲覀兊膇d=table 的div組件,鎖死了高度500px。并且最外層負(fù)責(zé)Y軸滾動(dòng)的list組件并沒(méi)有一個(gè)固定高度,且小于內(nèi)部元素。

我們給予表格容器 id=table 一個(gè)自適應(yīng)的高度,因?yàn)楝F(xiàn)在的hml中的div不支持高度自動(dòng)(height:auto)。那么我們需要在//js中先計(jì)算需要的高度,然后將值綁定在hml中。

最后的代碼:

//jsexport default { data: { table_data:[ [“日期/時(shí)間”,“2020-12-16”,“2020-12-16”,“2020-12-16”,“2020-12-16”,“2020-12-16”,“2020-12-16”,“2020-12-16”,“2020-12-16”,“2020-12-16”,“2020-12-16”,“2020-12-16”,“2020-12-16”], [“表頭1”,“10.10”,“15.36”,“58.00”,“66.41”,“20.21”,“22.00”,“10.10”,“15.36”,“58.00”,“66.41”,“20.21”,“22.00”], [“表頭2”,“10.10”,“15.36”,“58.00”,“66.41”,“20.21”,“22.00”,“10.10”,“15.36”,“58.00”,“66.41”,“20.21”,“22.00”], [“表頭3”,“10.10”,“15.36”,“58.00”,“66.41”,“20.21”,“22.00”,“10.10”,“15.36”,“58.00”,“66.41”,“20.21”,“22.00”], [“表頭4”,“10.10”,“15.36”,“58.00”,“66.41”,“20.21”,“22.00”,“10.10”,“15.36”,“58.00”,“66.41”,“20.21”,“22.00”], [“表頭5”,“10.10”,“15.36”,“58.00”,“66.41”,“20.21”,“22.00”,“10.10”,“15.36”,“58.00”,“66.41”,“20.21”,“22.00”], [“表頭6”,“10.10”,“15.36”,“58.00”,“66.41”,“20.21”,“22.00”,“10.10”,“15.36”,“58.00”,“66.41”,“20.21”,“22.00”], [“表頭7”,“10.10”,“15.36”,“58.00”,“66.41”,“20.21”,“22.00”,“10.10”,“15.36”,“58.00”,“66.41”,“20.21”,“22.00”] ], table_height:‘’

}, onInit() { let rowNum = this.table_data[0].length let height = rowNum*60 //我們?cè)赾ss中設(shè)計(jì)了行高為60像素,在這里計(jì)算出高度 this.table_height = height + ‘px’ }}

《!--hml--》《div class=“container”》 《list scrollbar=“on” style=“height: 500px;”》 《list-item》 《!--JS 計(jì)算出的高度數(shù)據(jù)綁定在此--》 《div id=“table” style=“height: {{table_height}};”》 《list id=“table-row” style=“flex-direction: row;”》 《list-item for=“(index,item) in table_data” style=“width: 30%;”》 《div class=“row”》 《div for=“value in item” class=“col”》 《text style=“width: 100%;text-align: center;”》 《span》{{ value }}《/span》 《/text》 《/div》 《/div》 《/list-item》 《/list》 《/div》 《/list-item》 《/list》《/div》

/*css*/.container { padding: 10px;}#table { width: 100%; height: 500px;/* border: 1px solid #000;*/}.row { display: flex ; flex-direction:row; flex-wrap:wrap;}.col { width: 100%; height: 60px; border: 1px solid #000;}

滑動(dòng)條出現(xiàn),就解決了數(shù)據(jù)增多,Y軸無(wú)法滑動(dòng)查看的問(wèn)題。至此,我們就完成本次的開(kāi)發(fā)目標(biāo),用list組件創(chuàng)建一個(gè)自定義表格,只需幾行代碼就可以解決,非常便捷和高效。

以上就是本期作者分享的如何用List組件自定義的一個(gè)表格,大家可以根據(jù)自己的需求,用List組件自定義你想要的表格。學(xué)無(wú)止境,希望本期分享的內(nèi)容能給你帶來(lái)新的啟發(fā)。同時(shí)也歡迎更多開(kāi)發(fā)者與我們分享開(kāi)發(fā)成果、技術(shù)解讀與經(jīng)驗(yàn)心得,說(shuō)不定下一期的主角就是你哦!

編輯:jq

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

    關(guān)注

    8

    文章

    7292

    瀏覽量

    93362
  • JS
    JS
    +關(guān)注

    關(guān)注

    0

    文章

    78

    瀏覽量

    18640
  • ui
    ui
    +關(guān)注

    關(guān)注

    0

    文章

    208

    瀏覽量

    22109
  • HarmonyOS
    +關(guān)注

    關(guān)注

    80

    文章

    2141

    瀏覽量

    34911

原文標(biāo)題:如何用JS UI框架中的List組件畫一個(gè)表格?

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    【M-K1HSE開(kāi)發(fā)板免費(fèi)體驗(yàn)】相關(guān)源碼之閱讀和分析1-使用XComponent + Vsync 實(shí)現(xiàn)自定義動(dòng)畫

    /JS 前端層) pages: 存放應(yīng)用的UI頁(yè)面。這里面應(yīng)該有個(gè)頁(yè)面包含了組件。 FeatureComponent.ets: 很可能是對(duì)
    發(fā)表于 09-03 16:05

    【匯思博SEEK100開(kāi)發(fā)板試用體驗(yàn)】3/第次使用OpenHarmony

    :??eTS??(或JS) Device Type:勾選目標(biāo)設(shè)備(如Phone) 。 ??二、編寫第一個(gè)功能:修改歡迎語(yǔ)?? ??定位入口文件?? eTS項(xiàng)目:entry/src/main/ets
    發(fā)表于 08-20 22:21

    matlab appdesigner 表格組件賦值問(wèn)題,求助

    如上圖所示,我在用matlab2021Ra APP模塊進(jìn)行編程的時(shí)候,想在表格中調(diào)入自己編寫的結(jié)構(gòu)數(shù)組,我從網(wǎng)上AI了個(gè)程序語(yǔ)句,看著沒(méi)問(wèn)題,但是就是給表格賦值不了,還請(qǐng)各位大神幫
    發(fā)表于 07-12 11:45

    ArkUI介紹

    ArkUI(方舟UI框架)為應(yīng)用的UI開(kāi)發(fā)提供了完整的基礎(chǔ)設(shè)施,包括簡(jiǎn)潔的UI語(yǔ)法、豐富的UI功能(組件
    發(fā)表于 06-24 06:41

    UI開(kāi)發(fā)概述

    的渲染效果。開(kāi)發(fā)者可以將系統(tǒng)內(nèi)置組件組合為自定義組件,通過(guò)這種方式將頁(yè)面組件化為一個(gè)個(gè)獨(dú)立的UI單元,實(shí)現(xiàn)頁(yè)面不同單元的獨(dú)立創(chuàng)建、開(kāi)發(fā)和復(fù)用
    發(fā)表于 06-24 06:36

    HarmonyOS NEXT應(yīng)用元服務(wù)布局優(yōu)化ArkUI框架執(zhí)行流程

    、 ArkUI框架執(zhí)行流程 在使用ArkUI開(kāi)發(fā)中,我們通過(guò)布局組件和基礎(chǔ)組件進(jìn)行界面描述,這些描述會(huì)呈現(xiàn)出
    發(fā)表于 06-23 09:41

    HarmonyOS NEXT應(yīng)用元服務(wù)布局合理使用布局組件

    布的組件是按照特定的方向線性放置,如橫向/縱向/Z序方向。除上述布局類型外,還有些復(fù)雜布局能力,如Flex、List、Grid、RelativeContainer和自定義布局等。 使用Flex構(gòu)建彈性
    發(fā)表于 06-20 15:48

    Kuikly鴻蒙版正式開(kāi)源 —— 揭秘卓越性能適配之旅

    端的基礎(chǔ)能力和設(shè)施,包括豐富的跨端組件,完善的調(diào)試、構(gòu)建、發(fā)布、監(jiān)控配套工具鏈,穩(wěn)定性監(jiān)控能力等。 Kuikly框架優(yōu)勢(shì): 碼五端,支持Android、iOS、鴻蒙、Web、小程序5個(gè)
    發(fā)表于 06-04 16:46

    UIAbility組件UI的數(shù)據(jù)同步介紹

    通信。使用EventHub實(shí)現(xiàn)UIAbility與UI之間的數(shù)據(jù)通信需要先獲取EventHub對(duì)象,本章節(jié)將以此為例進(jìn)行說(shuō)明。 在UIAbility中調(diào)用eventHub.on()方法注冊(cè)個(gè)自定義
    發(fā)表于 05-16 06:10

    創(chuàng)建列表 (List) 介紹,起來(lái)看看是做什么的

    應(yīng)用程序中的常見(jiàn)要求(如通訊錄、音樂(lè)列表、購(gòu)物清單等)。 開(kāi)發(fā)布局 設(shè)置主軸方向 List組件主軸默認(rèn)是垂直方向,即默認(rèn)情況下不需要手動(dòng)設(shè)置List方向,就可以構(gòu)建
    發(fā)表于 04-30 07:06

    Demo示例: List的使用

    寬度時(shí),子組件主軸方向的間隔取分割線寬度。 initialIndexnumber否設(shè)置當(dāng)前List初次加載時(shí)視口起始位置顯示的item的索引值。 默認(rèn)值:0 說(shuō)明: 設(shè)置為負(fù)數(shù)或超過(guò)了當(dāng)前List最后
    發(fā)表于 04-28 06:49

    Web Components實(shí)踐:如何搭建個(gè)框架無(wú)關(guān)的AI組件庫(kù)

    年左右各個(gè)瀏覽器才實(shí)現(xiàn)了Custom Element V1版本。然而,在同時(shí)期,諸如Vue和React等組件框架已經(jīng)開(kāi)始主導(dǎo)前端
    的頭像 發(fā)表于 04-08 11:27 ?391次閱讀
    Web Components實(shí)踐:如何搭建<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b><b class='flag-5'>框架</b>無(wú)關(guān)的AI<b class='flag-5'>組件</b>庫(kù)

    火語(yǔ)言如何循環(huán)讀取表格

    描述 從MySQL讀取數(shù)據(jù)(包含列名:id,name,count,create_date)輸出到表格類型變量dt,用For循環(huán)讀取表格每行數(shù)據(jù),通過(guò)dt.Rows[i]['id']取表格第i行列
    的頭像 發(fā)表于 02-07 15:11 ?426次閱讀
    火語(yǔ)言如何循環(huán)讀取<b class='flag-5'>表格</b>

    Node.js小科普和Node.js安裝常見(jiàn)管理工具

    Node.js個(gè)JavaScript的運(yùn)行環(huán)境,用來(lái)執(zhí)行JavaScript代碼。 為什么會(huì)出現(xiàn)這么個(gè)運(yùn)行環(huán)境呢,從JavaScrip
    的頭像 發(fā)表于 11-23 15:37 ?650次閱讀
    Node.<b class='flag-5'>js</b>小科普和Node.<b class='flag-5'>js</b>安裝常見(jiàn)管理工具

    將DMA與C64x的框架組件結(jié)合使用

    電子發(fā)燒友網(wǎng)站提供《將DMA與C64x的框架組件結(jié)合使用.pdf》資料免費(fèi)下載
    發(fā)表于 10-16 10:29 ?0次下載
    將DMA與C64x的<b class='flag-5'>框架</b><b class='flag-5'>組件</b>結(jié)合使用