【微搭低代码】小程序中利用弹窗组件实现城市切换选择

简介: 【微搭低代码】小程序中利用弹窗组件实现城市切换选择

目录

上一篇中,我们介绍了如何使用弹窗组件,以及如何通过变量来控制弹窗组件的显示和隐藏。光有个弹窗组件还是不够的,我们需要往弹窗组件里添加具体的选项,选项可以被选中,并且将选中的值回填到页面中。我们本篇就介绍一下具体的实现。

1 初始化城市变量


要想显示所有的城市,需要先创建一个变量,变量的类型可以选择数组

光赋值为空还是不行的,我们需要初始化一下数据,考虑在生命周期函数中进行初始化

export default {
  onPageLoad(query) {
    //console.log('---------> LifeCycle onPageLoad', query)
    $page.dataset.state.citys = [
      {
        isselect:false,
        name:"呼和浩特"
      },
      {
        isselect:false,
        name:"包头"
      },
      {
        isselect:false,
        name:"鄂尔多斯"
      },
      {
        isselect:false,
        name:"乌兰察布"
      },
      {
        isselect:false,
        name:"巴彦淖尔"
      },
      {
        isselect:false,
        name:"阿拉善"
      },
      {
        isselect:false,
        name:"锡林郭勒"
      },
      {
        isselect:false,
        name:"通辽"
      },
      {
        isselect:false,
        name:"呼伦贝尔"
      },
      {
        isselect:false,
        name:"兴安盟"
      },
      {
        isselect:false,
        name:"乌海"
      },
      {
        isselect:false,
        name:"赤峰"
      }
    ]
  },
  onPageShow() {
    //console.log('---------> LifeCycle onPageShow')
  },
  onPageReady() {
    //console.log('---------> LifeCycle onPageReady')
  },
  onPageHide() {
    //console.log('---------> LifeCycle onPageHide')
  },
  onPageUnload() {
    //console.log('---------> LifeCycle onPageUnload')
  },
}

每一个城市我们都设置了两个属性,当前城市是否被选中和城市的名称

2 循环展示城市名称


城市变量初始化好之后,需要循环展示,我们利用普通容器和文本组件来搭建

普通容器可以设置为flex布局,水平对齐,平均分布,正换行

文本组件的话需要先绑定循环展示,我们绑定我们的城市变量

文本内容,使用表达式绑定,显示城市的名称

$for.id8.name

然后可以设置一下文本的样式,直接复制我的样式即可

self {
    width: 200px;
    height: 70px;
    margin-bottom: 15px;
    display: inline-block;
    line-height: 70;
    text-align: center;
    border-radius: 15px
}

搭建好了之后,这里有个需求是选中的城市,背景色是深灰色,未选中是浅灰色,我们可以给绑定自定义样式

forItems.id8.isselect===true?{background:'#737373'}:{background:'#ededf0'}

3 点击城市切换背景色并回填城市名称


初始化好城市的背景色之后,我们需要添加一个自定义方法,在点击城市的时候切换背景色并回填城市名称

export default function({event, data}) {
  console.log(data)
  $page.dataset.state.citys.map((item,index)=>{
    if(item.name===data.target.name){
      item.isselect = true
    }else{
      item.isselect = false
    }
  })
  $app.dataset.state.area=data.target.name
}

调用的时候需要把循环对象传入

这样所有功能就都设置好了

总结


要想动态的改变组件的背景色,核心的点是通过自定义样式来实现,关键还是靠自己亲自练习掌握,如果觉得有用,感觉练起来吧。

相关文章
|
2月前
|
小程序 数据可视化 JavaScript
微信小程序:轻松实现时间轴组件
本文介绍了如何在微信小程序中实现一个可视化时间轴组件。该组件适用于展示用户资金流动、投资结算等时间节点,帮助用户直观了解资金去向。时间轴支持自定义节点形状、显示序号、倒序排列等功能,并通过插槽灵活定义动态内容。文中详细介绍了组件的设计与使用方法,以及如何结合动态 slot 实现自定义操作。该组件为展示用户资金信息提供了美观、易用的解决方案。
68 1
微信小程序:轻松实现时间轴组件
|
2月前
|
小程序
微信小程序动态tabBar实现:基于自定义组件,灵活支持不同用户角色与超过5个tab自由组合(更新版)
微信小程序动态tabBar实现:基于自定义组件,灵活支持不同用户角色与超过5个tab自由组合(更新版)
540 1
|
2月前
|
小程序 搜索推荐 API
微信小程序:自定义关注公众号组件样式
尽管关注公众号组件的样式固定且不可修改,但产品经理的需求却需要个性化的定制。在这种情况下,我们需要寻找解决方案,以满足这些特殊需求,尽管这可能有点棘手。
72 0
微信小程序:自定义关注公众号组件样式
|
2月前
|
小程序 前端开发 JavaScript
微信小程序图表制作利器:ECharts组件的使用与技巧
微信小程序图表制作利器:ECharts组件的使用与技巧
69 1
|
2月前
|
缓存 小程序 索引
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
224 1
|
2月前
|
小程序 JavaScript
微信小程序之input组件及其获取用户输入信息
微信小程序之input组件及其获取用户输入信息
64 1
|
3月前
|
小程序 容器
微信小程序常用组件的简单使用 view,scroll-view,swiper,swiper-item,text,rich-text,button,image
本文介绍了微信小程序中常用组件的使用方法,包括view、scroll-view、swiper与swiper-item、text与rich-text、button以及image组件。详细解释了各组件的功能、属性以及如何在小程序页面中进行使用。
微信小程序常用组件的简单使用 view,scroll-view,swiper,swiper-item,text,rich-text,button,image
|
2月前
|
小程序 数据可视化 API
低代码可视化-uniapp商城首页小程序-代码生成器
低代码可视化-uniapp商城首页小程序-代码生成器
31 0
|
2月前
|
小程序 前端开发 JavaScript
小程序入门之认识view和text组件
小程序入门之认识view和text组件
85 0
|
2月前
|
人工智能 小程序 Python
Python编程小案例——编一个事件提醒弹窗小程序
Python编程小案例——编一个事件提醒弹窗小程序
29 0