《仿盒马》app开发技术分享-- 分类模块顶部导航列表弹窗(16)

简介: 上一节我们实现了分类页面的顶部导航栏列表,并且实现了首页金刚区跟首页导航栏的联动,这一节我们实现导航栏列表的弹窗功能,需要学习的知识点有自定义弹窗,同时我们的数据源需要跟分类页保持一一致。

技术栈

Appgallery connect

开发准备

上一节我们实现了分类页面的顶部导航栏列表,并且实现了首页金刚区跟首页导航栏的联动,这一节我们实现导航栏列表的弹窗功能,需要学习的知识点有自定义弹窗,同时我们的数据源需要跟分类页保持一一致。

功能分析

1.弹窗
自定义弹窗的实现,然后我们需要在弹窗创建的时候实现数据的同步,当我们在弹窗未出现的时候进行列表下标的切换,打开弹窗的时候需要把对应的index传递进去,选中状态要保持同步。同时在弹窗内选择分类,外部列表也要同步切换,并且每次切换都要在list允许居中的情况下实现选中的item居中。

代码实现

首先实现弹窗的创建数据的传入,和选择后的回调
@Link select:number;
@Link dataSource: SplitLayoutModel[];
onItemSelected: (item: number) => void= () => {
};
controller: CustomDialogController;

然后实现相关布局以及逻辑
build() {
Column() {
Text('全部分类')
.fontSize(14)
.margin(12)
.width('100%')
.textAlign(TextAlign.Start)
.fontColor(Color.Black)

  Grid() {
    ForEach(this.dataSource, (item: SplitLayoutModel,index:number) => {
      GridItem() {
        Column() {
          // 图片部分
          Image(item.url)
            .width(40)
            .height(40)
            .borderRadius(20)
            .border({width:this.select === index?2:0,color:"#409EFF"})

          // 文本部分
          Text(item.txt)
            .textAlign(TextAlign.Center)
            .fontColor(Color.Black)
            .fontSize(10)
            .padding(2)
            .margin({top:5})
            .fontColor(this.select === index?"#FFFFFF":"#000000")
            .backgroundColor(this.select === index ? '#409EFF' : '#FFFFFF')
            .borderRadius(this.select === index ? 15:0)
        }
        .onClick(() => {
          if (this.select === index) {
            this.select = 0
          } else {
            this.select = index
          }
          this.onItemSelected?.(index);
          this.controller.close();
        })
      }
    })
  }
  .columnsTemplate('1fr 1fr 1fr 1fr 1fr')
  .layoutDirection(GridDirection.Row)
  .maxCount(5)
  .layoutWeight(1)
  Text("收起")
    .padding(10)
    .fontSize(16)
    .width('100%')
    .textAlign(TextAlign.Center)
    .fontColor(Color.Black)
    .onClick(()=>{
      this.controller.close()
    })
}
.margin({top:80})
.width('90%')
.backgroundColor(Color.White)
.borderRadius(16)
.padding(12)

}
}
可以看到我们已经在item的点击事件中引用了回调,然后我们回到列表组件页面,实现回调
dialogController: CustomDialogController = new CustomDialogController({
builder: CustomImageGridDialog({
select:this.selectedIndex,
dataSource: this.list,
onItemSelected: (item: number) => {
this.onItemClick!(item)
}
}),
alignment: DialogAlignment.Top,
customStyle:true
});
在这里我们实现下标的修改监听
onChange(){
this.listScroller.scrollToIndex(this.selectedIndex, true, ScrollAlign.CENTER)
}
确保每一次下标的修改,list都能实现居中,到这里我们的弹窗和金刚区以及列表的联动都已经实现了

相关文章
|
3月前
|
存储 前端开发 API
可配置化App启动弹窗系统:实现后台动态管理与热更新引导-蜻蜓Q系统laravel+vue3-优雅草卓伊凡
可配置化App启动弹窗系统:实现后台动态管理与热更新引导-蜻蜓Q系统laravel+vue3-优雅草卓伊凡
336 5
可配置化App启动弹窗系统:实现后台动态管理与热更新引导-蜻蜓Q系统laravel+vue3-优雅草卓伊凡
|
6月前
|
JSON 数据格式
《仿盒马》app开发技术分享-- 分类右侧商品列表(18)
上一节我们实现了分类页左侧二级分类列表功能,并实现了顶部列表&弹窗跟左侧列表的联动,这一节我们需要在它们联动的基础上继续添加右侧列表的联动效果
104 4
|
6月前
|
JSON 数据挖掘 数据格式
《仿盒马》app开发技术分享-- 分类左侧列表(17)
上一节我们实现了分类页面的顶部导航栏全选弹窗列表,并实现了跟顶部列表的点击选中联动效果,这一节我们要实现的功能是,分类模块的左侧列表,它同样也需要跟弹窗列表的点击,顶部列表的点击有联动的效果
123 4
|
2月前
|
缓存 移动开发 JavaScript
如何优化UniApp开发的App的启动速度?
如何优化UniApp开发的App的启动速度?
550 139
|
2月前
|
移动开发 JavaScript weex
UniApp开发的App在启动速度方面有哪些优势和劣势?
UniApp开发的App在启动速度方面有哪些优势和劣势?
348 137
|
2月前
|
数据采集 JavaScript 前端开发
开发比分App?你缺的不是程序员
开发体育比分App,关键不在代码,而在懂体育、懂数据、懂用户。明确定位、理清需求、选好数据源,再找专业的产品、数据与技术人才协同,才能少走弯路。程序员最后入场,效率最高。
231 154
|
3月前
|
移动开发 小程序 Android开发
基于 uni-app 开发的废品回收类多端应用功能与界面说明
本文将对一款基于 uni-app 开发的废品回收类多端应用,从多端支持范围、核心功能模块及部分界面展示进行客观说明,相关资源信息也将一并呈现。
164 0
|
2月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
313 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
2月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
280 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡