APICloud AVM框架 密码输入框组件

本文介绍了基于AVM(Application-View-Model)的前端组件化开发模式,该模式兼容Vue和React语法,并提供多端编译工具。以一个带网格的密码输入框组件为例,详细展示了组件的结构、功能及使用方法,包括组件的代码编写、样式设计以及在项目中的应用。此外,还阐述了如何在AVM组件库中寻找或自定义组件,以满足不同平台的开发需求。

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

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

组件功能介绍

带网格的输入框组件,可以用于输入密码、短信验证码等场景,通常与数字键盘组件配合使用。

支持自定义密码长度,支持加密和明文显示。 

组件示例

组件开发

组件文件

password-input.stml

<template>
	<view class="password-input_container">
		<view class="password-input_security">
			<view class="password-input_item" v-for="(item,index) in codeArr" data-index={index} @click="codeInput">
				<text class="password-input_item-word--hidden" v-if="this.props.passwordCode[index] && !this.props.mask"></text>
				<text class="password-input_item-word--mask" v-if="this.props.passwordCode[index] && this.props.mask">{this.props.passwordCode[index]}</text>
			</view>
		</view>
	</view>
</template>
<script>
	export default {
		name: 'password-input',
		props:{
			length:Number,
			passwordCode:Array,
			mask:Boolean
		},
		install(){
			for (let index = 0; index < this.props.length; index++) {
				this.data.codeArr[index]=null;		
			}
		},
		data() {
			return{
				codeArr:[]
			}
		},
		methods: {
			codeInput(e){
				this.fire('codeClick','');
			}
		}
	}
</script>
<style>
	.password-input_container {
		margin: 10px;
	}
	.password-input_security{
		flex-flow: row nowrap;
		height: 50px;
	}
	.password-input_item{
		display: flex;
		align-items: center;
		flex: 1;
		background-color: #fff;
		height: 100%;
		border: 0.5px solid #eee;
		margin: -0.5px;
		justify-content: center;
	}
	.password-input_item-word--hidden{
		width: 10px;
		height: 10px;
		background-color: #000;
		border-radius: 100%;
	}
	.password-input_item-word--mask{
		font-size: 30px;
		text-align: center;
	}
</style>

组件使用说明

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

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

 

找到对应模块点击进入。 

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

 

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

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

 

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

 

具体在项目中的使用步骤是,第一步将压缩文件中的easy-password-input.stml和easy-number-keyboard.stml(需要数字键盘配合使用)文件拷贝到项目的components目录,通过阅读readme.md 文档和查看demo示例文件 demo-easy-password-input.stml在需要开发的stml文件中,引入组件文件,完成页面的开发。

示例文件

demo-password-input.stml

<template>
	<view class="page">
		<safe-area></safe-area>
		<text class="title">请输入6位数密码</text>
		<password-input
			:length={codeLength}
			:passwordCode={passwordCode}
			:mask={isMask}
			oncodeClick="openKeyBoard">
		</password-input>
		<button class="btn">确定</button>
		<number-keyboard
			:limitLengh="codeLength"
			:recnetNumber="passwordCode"			
			:isRandom="isRandom"
			:isModel="isModel"
			onclose="closeNumberBoard" 
			onsetNumber="getNumber" 
			ondelNumber="deleteNumber"
			v-if="isShowNUmberBoard">
		 </number-keyboard>
	</view>
</template>
<script>
	import '../../components/password-input.stml'
	import '../../components/number-keyboard.stml'
	export default {
		name: 'demo-password-input',
		apiready(){
			
		},
		data() {
			return{
				codeLength:6,
				passwordCode:[],
				isRandom:true,
				isShowNUmberBoard:false,
				isModel:true,
				isMask:false,
				passwordCodeStr:'',
			}
		},
		methods: {
			closeNumberBoard(e){
				this.data.isShowNUmberBoard = false;
			},
			getNumber(e){
				// console.log(JSON.stringify(e));
				this.data.passwordCode = e.detail;
				this.data.passwordCodeStr = this.data.passwordCode.join('');
				if(this.data.passwordCode.length==this.data.codeLength){
					this.data.isShowNUmberBoard = false;
				}
			},
			deleteNumber(e){
				this.data.passwordCode = e.detail;
				this.data.passwordCodeStr = this.data.passwordCode.join('');
			},
			openKeyBoard(e){
				this.data.isShowNUmberBoard = true;
			}
		}
	}
</script>
<style>
	.page {
		height: 100%;
		background-color: #f0f0f0;
	}
	.title{
		text-align: center;
		font-size: 20px;
		padding: 20px 0;
	}
	.btn{
		margin: 10px;
		background-color: #ff0000;
		color: #ffffff;
		border-radius: 10px;
		font-size: 20px;
	}
</style>

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

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

白鱼赤乌

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

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

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

打赏作者

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

抵扣说明:

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

余额充值