> 文档中心 > 鸿蒙开发学习-Day2

鸿蒙开发学习-Day2

文章目录

  • 前言
  • 一、overflow横向滚动视图
  • 二、轮播图练习
  • 三、鸿蒙JavaScript的增删改查
  • 四、鸿蒙JavaScript的分页
  • 总结

前言

今天对昨天的作业——横向滚动视图进行了讲解,做了一个轮播图的练习,之后学习了鸿蒙js的增删改查和分页。


提示:以下是本篇文章正文内容

一、overflow横向滚动视图

昨晚练习的时候发现怎么都不能把overflow:scroll从纵向改成横向,于是查了一下,发现文档里说暂时只支持纵向:
鸿蒙开发学习-Day2
但通过后来的调整发现overflow:scroll也可以实现横向滚动,只需要在block的外面加一层div,在外层使用overflow:scroll样式就可以了,见代码:
hml:

<div class="container">    <div class="topview"> <block for="{{arrs}}">     <div class="boxview">  <text>{{$item}}</text>     </div> </block>    </div></div>

css:

.container {    display: flex;    width: 100%;    height: 100%;    }.boxview{    width: 30%;    height: 20%;/*    width: 12%;*//*    height: 100%;*/    border: 2vp solid black;    display: flex;    justify-content: center;    align-content: center;    margin: 20vp;}.topview{    display: flex;    height: 40%;    overflow: scroll;    border-bottom: 10vp solid black;    justify-content: center;    align-content: center;}

js:

export default {    data: { arrs:[]    },    onInit()   //onInit  页面初始化完成    { //arrs放100个字符串类型的数据 //  var 和  let 区别 //  javascript  是个弱类型语言 java  是个强类型语言 for(let i = 0 ; i<=10;i++) {     //数组放入数据 第+i+项     this.arrs.push("第"+i+"项"); }    }}

效果如图:
鸿蒙开发学习-Day2

二、轮播图练习

代码如下:

hml:

<div class="container">    <div class="topview"> <swiper class="swiperview" autoplay="true" indicator="true">     <block for="{{swiperdatas}}">  <div class="box">      <image src="{{$item}}"></image>  </div>     </block> </swiper>    </div>    <div class="twoview"> <block for="{{imagedatas}}">     <div class="hbox">  <image class="imgview" src="{{$item}}"></image>     </div> </block>    </div></div>

css:

.container {    display: flex;    flex-direction: column;    width: 100%;    height: 100%;    background-color: powderblue;}.topview{    width: 100%;    height: 22%;    border-bottom: 2vp solid black;}.swiperview{    width: 100%;    height: 100%;}.twoview{/ width: 100%;/    display: flex;    overflow: scroll;    height: 22%;    border-bottom: 2vp solid black;}.box{    width: 100%;    height: 100%;}.hbox{    width: 42%;    height: 100%;/*    border: 1vp solid black;*/    margin: 22vp;/*     border-radius: 10vp;*/}.imgview {    width: 100%;    height: 100%;    border-radius: 10vp;}

js:

export default {    data: { swiperdatas:["common/images/a1.png","common/images/a2.png","common/images/a3.png"], imagedatas:["common/icon/a1.jpg","common/icon/a2.jpg","common/icon/a3.jpg","common/icon/a4.jpg", "common/icon/a5.jpg","common/icon/a6.jpg","common/icon/a7.jpg","common/icon/a8.jpg", "common/icon/a9.jpg","common/icon/a12.jpg"]    }}

实现效果:
鸿蒙开发学习-Day2


三、鸿蒙JavaScript的增删改查

代码如下:
hml:

<div class="container">    <div class="topview"> <div class="btnview" onclick="add">     <text>增加</text> </div> <div class="btnview" onclick="delall">     <text>全部删除</text> </div>    </div>    <div class="contentview"> <block for="{{arrsdatas}}">     <div class="boxview">  <text>{{$item}}</text>  <button type="text" onclick="delitem({{$idx}})" class="delbtn">删除</button>     </div> </block>    </div></div>

css:

.container {    display: flex;    flex-direction: column;    width: 100%;    height: 100%;    background-color: #dff0f6;}.topview {    width: 100%;    height: 20%;    display: flex;    justify-content: center;    align-items: center;}.contentview{    width: 100%;    display: flex;    flex-direction: column;    overflow: scroll;    background-color: #c2dff6;}.btnview{    width: 40%;    height: 50%;    background-color: #83b8d4;    display: flex;    justify-content: center;    align-items: center;    margin: 10px;    border-radius: 10px;    color: white;}.boxview{    width: 100%;    height: 12%;/*    width: 12%;*//*    height: 100%;*/    border: 1vp solid white;    display: flex;    justify-content: space-around;    align-items: center;    border-radius: 5px;}.delbtn{    font-size: 18px;    letter-spacing: 2px;}

js:

import prompt from '@system.prompt';export default {    data: { arrsdatas:[]    },    onInit() //onInit  页面初始化加载    { //arrs放100个字符串类型的数据 // var  和  let 区别 //javascript是个弱类型语言  java是个强类型语言 for(let  i =0 ; i<=10; i++) {     //数组放入数据  第+i+项     this.arrsdatas.push("第"+i+"项"); }    },    delall(){ prompt.showDialog({     title:"操作提示",     message:"确定全部删除?",     buttons:[{"text":"确认","color":"#000000"},{"text":"取消","color":"#000000"}],     success:(event)=>{  if(event.index == 0) {      //删除所有只需要把arrdataset重新赋值为空      this.arrsdatas = [];  }  if(event.index == 1) {      prompt.showToast({   message:"你取消了删除操作",   duration:6000      })  }     } })    },    add() { //添加随机数据 使用js //数值范围 0~ <数值 let rv = parseInt(Math.random()*11);//取整 this.arrsdatas.push("随机数 " + rv);    },    delitem(index){ prompt.showDialog({     title:"操作提示",     message:"确定删除这条数据吗?",     buttons:[{"text":"确认","color":"#000000"},{"text":"取消","color":"#000000"}],     success:(event)=>{  if(event.index == 0) {      this.arrsdatas.splice(index, 1);  }  if(event.index == 1) {      prompt.showToast({   message:"你取消了删除操作",   duration:6000      })  }     } })    }}

实现效果:
鸿蒙开发学习-Day2
鸿蒙开发学习-Day2


四、鸿蒙JavaScript的分页

代码如下:
hml:

<div class="container">    <div class="contentview"> <block for="{{listdata}}">     <div class="lineview">  <text>{{$item}}</text>     </div> </block>    </div>    <div class="operateview" onclick="loadmore" disabled="{{flag}}"> <text>{{loadtext}}</text>    </div></div>

css:

.container {    display: flex;    justify-content: center;    align-items: center;    left: 0px;    top: 0px;    width: 100%;    height: 100%;}.contentview {    width: 100%;    display: flex;    flex-direction: column;    overflow: scroll;}.lineview{    width: 100%;    height: 12%;/*    width: 12%;*//*    height: 100%;*/    border: 1vp solid white;    display: flex;    justify-content: space-around;    align-items: center;    border-radius: 5px;}.operateview {    font-size: 30px;    text-align: center;    width: 100%;    height: 80vp;    position: fixed;    bottom: 0;    left: 0;    display: flex;    justify-content: center;    align-items: center;    background-color: #a0d1e7;    opacity: 0.8;    border-radius: 10px;}

js:

import prompt from '@system.prompt';//每页几条const PAGE_NUM = 10;export default {    data: { arrsdatas:[], listdata:[],//每次放10条 currentPage:1, loadtext: "加载更多", flag:false,    },    onInit() //onInit  页面初始化加载    { //50条数据 为什么要分页?1.一次性加载会影响页面渲染的性能 2.用户可能只需要前20条 for(let  i =0 ; i<=50; i++) {     //数组放入数据  第+i+项     this.arrsdatas.push("第"+i+"项"); } //使用js原生API分页,slice截取并没有删除 this.listdata = this.arrsdatas.slice(0, this.currentPage*PAGE_NUM);    },    loadmore() { this.currentPage ++; prompt.showToast({     message:"加载的是:第" + this.currentPage + "页数据", }); //1.总共的条数 let maxSize = this.arrsdatas.length%PAGE_NUM==0 ?      this.arrsdatas.length/PAGE_NUM : parseInt(this.arrsdatas.length/PAGE_NUM); //2.总共的条数/每页条数 = 页数 if(this.currentPage > maxSize) {     prompt.showToast({  message:"数据已全部加载完毕!",     });     this.loadtext = "到底了~";     this.flag = true; } else {     this.listdata = this.arrsdatas.slice(0, this.currentPage*PAGE_NUM); }    }}

效果如下:

鸿蒙开发学习-Day2
鸿蒙开发学习-Day2
鸿蒙开发学习-Day2


总结

解决文档中overflow:scroll无法横向滚动的问题,使用提示框prompt的时候注意要导入包

import prompt from ‘@system.prompt’;

否则会报错。