APICloud AVM框架 封装省市区级联选择弹框

APICloud AVM 封装日期和时间选择组件 前端 APICloud AVM 是一个基于 JavaScript 的前端框架,它提供了一系列的组件和工具,可以帮助开发人员快速构建跨平台的移动应用。其中,日期和时间选择组件是 AVM 中的一个重要部分,它允许用户在移动设备上选择日期和时间,提供了丰富的配置选项,以满足不同的需求。总结起来,使用 APICloud AVM 封装的日期和时间选择组件可以帮助开发人员快速实现移动应用中的日期和时间选择功能。通过简单的配置和调用,开发人员可以灵活地定制日期和时间选择的样式和参数,满足不同的需求。表示选择日期和时间。 阅读详情

AVM(Application-View-Model)前端组件化开发模式基于标准Web Components组件化思想,提供包含虚拟DOM和Runtime的编程框架avm.js以及多端统一编译工具,完全兼容Web Components标准,同时兼容Vue和React语法糖编写代码,编译工具将Vue和React相关语法糖编译转换为avm.js代码。

基于标准 Web Components 组件化思想,兼容 Vue / React 语法特性,通过一次编码,分别编译为 App、小程序代码,实现多端开发。
 

组件功能介绍

省市区级联选择框,也可用于其他多层级数据的选择,典型场景为省市区选择。

目前场景设定的是3级,可根据自己的实际需求改成2级或者4级或者更多级。

数据源就是典型的树形结构的JSON数组数据。实际代码中我封装了一个关于省市区三级数据的js插件,具体使用方法省市区三级行政区划数据JS插件 

示例展示 

  

 

组件开发

组件文件

area-cascader.stml

<template>
	<view class="area-cascader_container">
		<view class="area-cascader_box">
			<view class="area-cascader_box-header">
				<text class="area-cascader_box-header-label">请选择所在地区</text>
				<text class="area-cascader_box-header-button" @click="closeCascader">×</text>
			</view>
			<view class="area-cascader_box-nav">
				<view class="area-cascader_box-nav-item" v-for="(item,index) in result" data-index={index} @click="setSelect">
					<text class='area-cascader_box-nav-item--selected' v-if="this.data.selectIndex==index && item.value">{item.text}</text>
					<text class='area-cascader_box-nav-item--unselected' v-else-if="this.data.selectIndex==index && !item.value">请选择</text>
					<text class='area-cascader_box-nav-item--result' v-else-if="this.data.selectIndex!=index && item.value">{{item.text}}</text>
				</view>
			</view>
			<scroll-view class="area-cascader_pane" scroll-y="">
				<view class="area-cascader_pane-option" v-for="(item,index) in selectArea" data-value={item.value} data-text={item.text} @click="setSelectItem">
					<text>{item.text}</text>
				</view>
			</scroll-view>
		</view>
	</view>
</template>
<script>
	export default {
		name: 'area-cascader',
		props:{
			options:Array
		},
		install(){
			this.data.result[0]={value:null,text:''};
		},
		installed(){
			this.data.selectArea = this.props.options;
		},
		data() {
			return{
				result:[],
				selectIndex:0,
				selectArea:[]
			}
		},
		methods: {
			setSelectItem(e){
				if(this.data.selectIndex<3){
					this.data.result[this.data.selectIndex].value=e.currentTarget.dataset.value;
					this.data.result[this.data.selectIndex].text=e.currentTarget.dataset.text;
					//追加下一级
					this.data.selectIndex+=1;				
					if(this.data.selectIndex<3){
						this.data.result[this.data.selectIndex]={value:null,text:''};
						var parentOption=this.data.selectArea.filter(item=>item.value==e.currentTarget.dataset.value);
						this.data.selectArea = parentOption[0].children;
					}				
					if(this.data.selectIndex==3){
						this.fire('finish',this.data.result);
					}
				}				
			},
			closeCascader(){
				this.fire('close','');
			},
			setSelect(e){
				this.data.selectIndex=e.currentTarget.dataset.index;
				if(this.data.selectIndex==0){
					this.data.selectArea = this.props.options;
				}
				else if(this.data.selectIndex==1){
					var parentOption=this.props.options.filter(item=>item.value==this.data.result[0].value);
					this.data.selectArea = parentOption[0].children;
				}
			}
		}
	}
</script>
<style>
	.area-cascader_container {
		position: absolute;
		height: 100%;
		width: 100%;
		background-color: rgba(0,0,0,0.1);
	}
	.area-cascader_box{
		align-items: center;
		position: absolute;
		bottom: 0;
		width: 100%;
		height: 70%;
		background-color: #ffffff;
		border-top-left-radius: 30px;
		border-top-right-radius: 30px;
	}
	.area-cascader_box-header{
		width: 100%;
		flex-flow: row nowrap;
		justify-content: space-between;
		align-items: center;
		padding: 10px 15px 0 15px;
	}
	.area-cascader_box-header-label{
		font-size: 18px;
	}
	.area-cascader_box-header-button{
		font-size: 40px;
		color: #ccc;
	}
	.area-cascader_box-nav{
		width: 100%;
		flex-flow: row nowrap;
		justify-content: flex-start;
		align-items: center;
		padding: 15px;
	}
	.area-cascader_box-nav-item{
		box-sizing: border-box;
		align-items: center;
		/* background-color: #452334; */
		margin-right: 20px;
		justify-content: center;
	}
	.area-cascader_box-nav-item--selected{
		font-size: 16px;
		padding-bottom: 10px;	
		border-bottom: 3px solid #49c916;
	}
	.area-cascader_box-nav-item--unselected{
		font-size: 16px;
		padding-bottom: 10px;
		border-bottom: 3px solid #49c916;
	}
	.area-cascader_box-nav-item--result{
		font-size: 16px;
		padding-bottom: 13px;
		border-bottom: 0;
	}
	.area-cascader_pane{
		padding-left: 15px;
		padding-right: 10px;
		width: 100%;
		height: 80%;
	}
	.area-cascader_pane-option{	
		flex-flow: row nowrap;
		align-items: flex-start;
		justify-content: space-between;
		padding: 5px 0;
	}
</style>

组件使用说明

本组件是基于AVM.js开发的多端组件,通常同时适配Android、iOS、小程序、H5 , 具体支持情况还要看每个组件的说明文档。

首先需要登录开发平台,http://www.apicloud.com。 通过控制平台右上方的模块Store进入,然后选择AVM组件。

 

找到对应模块进入

 

也可通过搜索栏,通过组件名称关键字进行检索。

 进入模块详情,点击立即下载下载完整的组件安装包。  

组件压缩包的文件目录如下

 

也可通过查看模块文档 来了解模块的具体参数,引用的原生模块,注意事项等。 

具体在项目中的使用步骤是,第一步将压缩文件中的easy-area-cascader.stml文件拷贝到项目的components目录,通过阅读readme.md 文档和查看demo示例文件 demo-easy-area-cascader.stml在需要开发的stml文件中,引入组件文件,完成页面的开发。

areaList.js文件,可根据实际项目放到对应的文件夹中,我放在了utils这个文件夹中。本插件基于ES6语法封装的,封装了areaList,getTree,getArea,getCity,getProvince四个方法,本组件中用到的事getTree,返回的是树形结构的JSON格式数据。

demo-area-cascader.stml

<template>
	<view class="page">
		<safe-area></safe-area>
		<text style="padding:10px;font-size:20px;">地区级联选择</text>
		<view class="box" @click="openCascader">
			<text>地区</text>
			<text>{selectArea}</text>
			<image class="more" src={ico} mode="widthFix"></image>
		</view>
		<area-cascader
			:options="areaValue"
			onfinish="getArea"
			onclose="closeCascader"
			v-if="isShowCascader"
		>
		</area-cascader>
	</view>
</template>
<script>
	import '../../components/area-cascader.stml'
	import {areaList,getTree,getArea,getProvince,getCity} from '../../utils/areaList.js'
	export default {
		name: 'demo-area-cascader',
		apiready(){
			this.data.areaValue = getTree();
			// getCity('130000');
			// getProvince();
			// getArea('130200');
		},
		data() {
			return{
				selectArea:'',
				areaValue:[],
				isShowCascader:false,
				ico:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAZRJREFUeF7t2z1KxEAYgOF3D2Old7AVsdlirS3sBEE9gB5gYQtLC3utxZPYeRgZ2CKEXSGT+X4nqUIgkPfJzBQZsqLzY9V5PwvAMgLsBDbAGjgHPoAHi0exnALvwM0g+hO41kawBNgCT6NgdQRLgAvg+8AbV0WwBCjtZR0o8398qCFYA5gjeAAwRfACYIbgCcAEwRuAOoJHAFUErwBqCJ4BVBC8A4gjRAAQRYgCIIYQCUAEIRpAc4SIAE0RogI0Q4gM0AQhOsBshAwAsxCyAFQjZAKoQsgGMBkhI8B/CK/A/fATdFaAYwi/wEnPAD/AWQ8AxzZcdsBjdoBJu03Z1oBJ8WUkZAKYHJ8JoCo+C0B1fAaAWfHRAWbHRwZoEh8VoFl8RICm8dEAmsdHAhCJjwIgFh8BQDTeO4B4vGcAlXivAGrxHgFU470BqMd7AjCJ9wJgFu8BwDTeGuAS+Bp+ot6fq/0rYA3wBtyOAFTjrQFegOcBgHq8NcDV/qepU6DE3x2YDuKXMu0LVGEtAFVsiW7qfgT8AYVYcEHJaD3BAAAAAElFTkSuQmCC',
				
			}
		},
		methods: {
			getArea(e){
				// console.log(JSON.stringify(e));
				this.data.selectArea = e.detail[0].text+'/'+e.detail[1].text+'/'+e.detail[2].text;
				this.data.isShowCascader = false;
			},
			openCascader(e){
				this.data.isShowCascader = true;
			},
			closeCascader(e){
				this.data.isShowCascader = false;
			}
		}
	}
</script>
<style>
	.page {
		height: 100%;
		background-color: #ffffff;
	}
	.box{
		flex-flow: row nowrap;
		justify-content: space-between;
		align-items: center;
		margin: 10px;
		border-radius: 5px;
		background-color: #f0f0f0;
		padding: 10px;
	}
	.more{
		width: 20px;
	}
</style>

如果在AVM组件库中,没有找到实际项目中需要的组件,可以自己尝试封装组件。

这是组件化开发的在线文档地址

 

LT9611EX芯片实战:如何用双端口MIPI转HDMI1.4打造高清播放器(附配置代码) 本文详细介绍了如何使用龙迅半导体的LT9611EX芯片实现双端口MIPI转HDMI1.4的高清播放器开发。内容涵盖芯片特性、硬件设计要点、寄存器配置技巧及完整代码实现,特别适合嵌入式视频处理应用,如机顶盒和便携式媒体播放器。 阅读详情

相关推荐

使用DeepSeek、MCP和AKShare实现智能金融问答系统技术方案

DeepSeek是由深度求索公司开发的大规模语言模型,最新版本DeepSeek-V3采用混合专家(MoE)架构,拥有671B参数,激活37B参数,在多项基准测试中表现优异3。要使用DeepSeek的API服务:访问DeepSeek平台注册账号获取API Key(形如AKShare是基于Python的金融数据接口库,提供股票、基金、期货、宏观经济等领域的海量数据。主要特点包括:免费开源,数据源丰富支持多种数据格式(DataFrame/JSON)持续更新维护安装命令。

Kin 3173

实例|APICloud AVM框架封装省市区级联选择弹框

省市区级联选择框,也可用于其他多层级数据的选择,典型场景为省市区选择。目前场景设定的是3级,可根据自己的实际需求改成2级或者4级或者更多级。数据源就是典型的树形结构的JSON数组数据。实际代码中我封装了一个关于省市区三级数据的js插件,具体使用方法省市区三级行政区划数据JS插件 。今天介绍用APICloud AVM框架封装省市区级联选择弹框。组件文件area-cascader.stml...

cuicuiniu521的博客 598

FAST-LIO2实战:从零搭建香港大学火星实验室SLAM框架(附官方数据集测试指南)

本文提供了一份详细的FAST-LIO2实战指南,帮助读者从零开始搭建香港大学火星实验室开源的这一高效激光惯性里程计框架。内容涵盖系统环境配置、依赖安装、源码编译、官方数据集测试以及参数调优,旨在让开发者快速上手并应用于机器人SLAM项目。

ppp33的博客 688

如何获取全国城市行政区划划分API接口?

以上代码示例中,我们使用requests库发送了一个GET请求,请求参数为appkey、province、city、area,其中appkey为必传参数,它是我们申请使用API时颁发的唯一标识符。随着大数据时代的到来,数据成为了各行各业必不可少的资源。特别是城市行政区划数据,它不仅是政府公共管理的基础,也是地理信息系统数据的基础,更是各行业进行市场调研和商业分析的重要数据资源。平台上提供了各种数据接口,其中就包括我们今天要介绍的城市行政区划划分数据接口I,它可以方便地获取全国范围内的城市行政区划数据。

挖数据API接口的博客 1943

SAP SD销售订单抬头自定义字段增强:BADI_SLS_HEAD_SCR_CUS实战指南

SAP ERP系统中的销售订单管理是企业核心业务流程,经常需要扩展标准功能来满足个性化业务需求。在SAP SD模块中,销售订单抬头屏幕的增强是常见需求。通过BADI(Business Add-In)技术,可以在不修改标准代码的前提下,实现自定义字段的添加与数据处理。本文详细介绍了如何使用BADI_SLS_HEAD_SCR_CUS实现销售订单抬头自定义字段,包括函数组子屏幕设计、数据存储表构建以及BADI方法的具体实现。这种增强方式适用于VA01/VA02/VA03等事务,保证了系统升级的兼容性和维护的便捷性

weixin_29758911的博客 349

破解雪球网acw_sc__v2加密与无限debugger反爬策略

本文详细解析了雪球网的反爬机制,重点破解了其核心的acw_sc__v2加密参数与无限debugger反调试策略。通过实战案例,从抓包分析、逆向调试到算法还原,提供了完整的Python代码实现,帮助开发者掌握应对类似加密反爬的通用方法。

weixin_29207533的博客 1897

多线程(callable+futureTask)去组装数据,并批量入库

      商城项目,收货地址会用到4级地址(省,市,县,镇),我们只用到了特定城市的。 但是我想通过京东的接口把全部的数据拿出来。于是就有 ------多线程(callable+futureTask)去组装数据。---------------------------    先贴下controller的代码:package com.truelore.xunjia.wssc.test.control...

fu_jian_feng的博客 2690

Anaconda离线创建python环境

既然是离线创建python环境,就需要有一个已经创建好的python环境。所以我们有两台win10的机器,分别是A和B。两台机器都安装了anaconda。其中A可以连网,因此我们在A上创建好一个python2.7的环境py27,然后将py27移植(安装)到B上。B连不连网都无所谓。 一、机器上A上创建python2.7的环境py27 有两种方法: 方法1:使用Anaconda的图形界面。首先,点击Environments->Create,然后输入要创建的环境名称"py27",然后选择2.7,如图

FY_2018的博客 6787

获取中国省、市、区数据(调用高德API)

获取省市区数据

qq_41634323的博客 1万+

如何解除Uniaccess管控??

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 2383

【乐企】开票控制服务

例子:企业信息初始化。

九七的博客 452

APICloud之小白图解教程系列(一):认识APICloud

篇头语:非常感谢APICloud官方给我版主职位,每天都看到很多朋友提出很多问题,我就借此机会写了一系列的教程,帮助大家从小白到高手之路。系列名称:《APICloud之小白图解教程系列》,会不定时的更新!前言:世界在改变,一切在移动化!可以说现在是移动互联网的时代,很多东西只需要一个APP就可以解决,富有:“秀才不出门,便知天下事”之说!移动APP分类1、Web APP:使用HTML/HTML5,...

lsxf_xin的专栏 4万+

基于Simulink的电动汽车电池管理系统热管理优化仿真

电动汽车电池管理系统(Battery Management System, BMS)中的热管理是确保电池性能、安全性和寿命的关键环节。温度过高或过低都会显著影响电池的工作效率和寿命,因此需要对电池组进行精确的热管理。基于MATLAB/Simulink的仿真平台可以用于建模和优化电池热管理系统,包括热分布预测、冷却策略设计以及热平衡控制等。本项目旨在构建一个完整的电动汽车电池热管理优化仿真模型,并通过仿真验证系统的性能。

xiaoheshang_123的博客 462

APICloud入门初体验

APP快速开发平台APICloud之初体验 借助APICloud开发平台,使用web开发技术制作的APP,和我们使用原生开发的APP,几乎没有任何区别,这是因为除了使用HTML、JS这些web开发技术外,APICloud为我们提供了许多原生模块,供我们在APP中调用,这种“原生+HTML”的混合开发模式,不仅降低了App的开发门槛,而且极大的提高了用户体验。从流畅度和美观度都足够满足主流App的...

Muchen灬 1906

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

apicloud打包发布apk

apicloud打包发布apk

weixin_43830264的博客 825

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

apicloud (第六篇 弹出底部菜单(多选、单选))

1、首先引入apicloud 框架的UIMultiSelector模块。 (*请仔细阅读:文档地址:https://docs.apicloud.com/Client-API/UI-Layout/UIMultiSelector) // 示例代码 var UIMultiSelector = api.require('UIMultiSelector'); //引入 UIMultiSelec...

程序猿小白的博客 2030

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

APICloud 5月SDK发版说明

APICloud Studio3可视化工具支持企业以全新的方式,快速构建企业级移动应用,让企业与开发者快速规模化部署业务发展的关键应用。

weixin_43947457的博客 447

一个开发神器,可助程序员实现副业赚钱

大家好,我是校长。今天给大家分享一个开发利器,程序员的效率神器,非常适合程序员以独立开发者的身份做副业。01大环境我们都知道,最近这段时间,互联网行业裁员信息不断,更是头部的互联网大公司都无法幸免。整个互联网大环境有点下行的趋势,再加上人口红利消失和互联网监管越来越严,似乎整个行业都弥漫着一种焦虑的情绪。其实,尤其是在这种困难的时候,要想增加自己抵御黑天鹅事件的抗风险能力...

非著名程序员 4750

apicloud 使用教程

1 创建应用 2 登录apicloud客户端 3 点击代码管理菜单,选择代码检出APICloud云端应用,选择刚刚创建的应用 4 新建一个文件夹,用于存放项目,将应用下载到这个文件夹 5 将别人的项目复制黏贴到你新建的项目文件夹覆盖它,不要复制git文件 6 用apicloud打开项目,修改config.xml文件,把appId换成刚刚创建的项目的APPID 7 点击查找,在项目中查找,替换项目中所有的APPID 8 在项目中查找 require关键字,依次将括号里的字符串复制,右击项目

淮右布衣的博客 5591

基于Atom的云端一体、全功能集成开发工具 APICloud Studio 2正式发布

近日,APICloud推出了首款云端一体的全功能集成开发工具——APICloud Studio 2。这是一款适合于前端工程师的移动应用集成开发该工具,基于Atom深度定制,与APICloud平台的各种云端移动开发服务器紧密结合,致力于让开发者开发APP、用于编码调试的工具更加简便。APICloud Studio 2具有三大特点:Atom、云端一体、全功能集成。 Atom Atom是一款主流、开源...

u010708922的博客 797

APICloud AVM框架 封装滑动单元格组件

滑动单元格组件原理是主题部分把按钮进行遮挡,按钮通过绝对定位,定位在最右边,通过监听触摸事件(touch),判断滑动的方向和计算滑动的距离以此来判定显示和隐藏按钮。显示和隐藏按钮是通过对主体部分进行css 的transform属性对主体元素进行移动,以达到显示和隐藏按钮的效果。............

白鱼赤乌的博客 343

ApiCloud将网站封装成app,间接开发属于自己的app,虽然很草率

1.注册进入控制台后,点击左上角“创建应用”2.选择Web App,填入你要制作成app的网站网址3.创建后进入,填写好端设置的logo,4.创建安卓证书,证书内容随便填,ios应用维护很麻烦,不建议制作ios应用5.最后云编译就行。

weixin_63660670的博客 521

新手入门教程,从0开始入手APIcloud(二)

前面一篇主要讲了项目的创建和布局方式。总结一下APP的布局方式最佳为win+frame,多写个文件多弄点优化才能让你的APP流畅度提高。这篇主要来讲一下模块的引入、服务器数据对接及APP数据存储方式。一、模块的引入和使用在apicloud的模块store里面提供了大量的模块,我们可以直接在html里面引入使用使用方法:在需要使用模块的页面中加入:var obj = api.require('模块名...

lsxf_xin的专栏 2万+

建立APICloud云端数据库

在我们平常做项目的过程总是会遇到一个较为苦逼的问题——就像假如你是移动端or网页前端的话,想开发一个可以联网的项目,仍然需要一个专门开发后台的人员来跟你一起合作开发项目,但是,假如你是使用APICloud的话,那你就可以免去这个烦恼了,因为APICloud官方已经提供一个开发后台的端口,你只需要在APICloud官网填写数据库表,便可以直接连接云端数据库进行操作。 建立APICloud云端数据库 ...

小屁孩大帅-保密的博客 5032

自学apicloud【Apicloud——关于上传图片、视频】

自己根据需要写了一个 需求: 读取已有图片实现预览——》实现点击方框动态添加多图,删除,实现预览——》提交,实现图片修改 效果图: 代码: 现有问题,写到现在的几篇,其中发的代码都太长了,主要是太懒了没有二次整理,这篇以后就不这样了, 因为发现我回头再看代码的时候,自己都觉得乱,毕竟把它写下来就是为了方便二次记忆学习的,现在这样已经不对了。 今天这个是最长的。 写的...

小屁孩大帅-保密的博客 1712

APICloud发布低代码开发平台

Linux系统技术交流QQ群(915246)验证问题答案:刘遄 网易科技讯,5 月 23 日消息,在 APICloud 新产品媒体发布会上,APICloud 创始人兼 CEO 刘鑫发布了全新的 IT 生产力工具“Plus Mode”。Plus Mode 为 IT 项目中每个角色提供工具的同时,可为每个环节提升 30% 至 60% 的工作效率。 根据介绍,这款涵盖需求分析、产品原型、UI 设计、...

u014389734的博客 554
上一篇: APICloud AVM框架 密码输入框组件
下一篇: 省市区三级行政区划数据JS插件
白鱼赤乌
博客等级 码龄10年 7粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白鱼赤乌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值