微信小程序动态添加view组件的实例代码


Posted in Javascript onMay 23, 2019

在web中,我们动态添加DOM,可以用jQuery的方法,很简单。在微信小程序中怎么实现下面这么需求。

微信小程序动态添加view组件的实例代码

其中,里程数代表上一行到这一行地方的距离(这个不重要);要实现的就是点击增加途径地,就多一行,删除途径地,就少一行。

分析:添加的和删除的是同样的结构,只是数量不一样,所以考虑循环,用列表表示,增加就往这个列表push一个,删除就从列表pop一个。

主要代码如下:

<view class="weui-cell weui-cell_input">
 <view class="weui-cell__hd">
 <view class="weui-label rui-justify">
 <text space="ensp">出 发 地</text>
 </view>
 </view>
 <view class="weui-cell__bd">
 <input class="weui-input" name="beginAddress" bindinput="inputedit" data-obj="info" data-item="beginAddress" value="{{info.beginAddress}}"
 placeholder="请输入出发地" disabled="{{info.isPreDetail}}" />
 </view>
</view>
<view wx:for="{{info.details}}" wx:key="key" class="forItemBorder">
 <view class="weui-cell weui-cell_input ">
 <view class="weui-cell__hd">
 <view class="weui-label rui-justify">
 <text space="ensp">途 径 地</text>
 </view>
 </view>
 <input class="weui-input" id="place-{{index}}" bindinput="setPlace" placeholder="请输入途径地" />
 <input class="weui-input lcs" id="number-{{index}}" bindinput="setNumber" placeholder="里程数(km)" />
 </view>
</view>
<view class="weui-cell weui-cell_input">
 <view class="weui-cell__hd">
 <view class="weui-label rui-justify">
 <text space="ensp">目 的 地</text>
 </view>
 </view>
 <input class="weui-input" name="destination" bindinput="inputedit" data-obj="info" data-item="destination" value="{{info.destination}}"
 placeholder="请输入目的地" disabled="{{info.isPreDetail}}" />
 <input class="weui-input lcs" name="endLength" bindinput="inputedit" data-obj="info" data-item="endLength" value="{{info.endLength}}"
 placeholder="里程数(km)" disabled="{{info.isPreDetail}}" />
</view>
<view class="weui-cell" hidden="{{info.isPreDetail}}">
 <button type='primary' bindtap='addItem' style='width:50%;'>增加途径地</button>
 <button type='primary' bindtap='removeItem' style='width:50%;margin-left:5rpx;'>
 删除途径地
 </button>
</view>

因为添加删除的是相同的结构,所以我构造了一个类Detail来表示这个view

/**
 * Detail类 构造函数 
 * @param {string} placeName 途径地
 * @param {string} number 里程数
 */
function Detail(placeName, number) {
 this.placeName = placeName;
 this.number = number;
}
function Info() {
 this.details = [];
}
Page({
 data: {
 info: {}
 },
 init: function () {
 let that = this;
 this.setData({
  info: new Info(),
 });
 },
 onLoad: function (options) {
 this.init();
 },
 addItem: function (e) {
 let info = this.data.info;
 info.details.push(new Detail());
 this.setData({
  info: info
 });
 },
 removeItem: function (e) {
 let info = this.data.info;
 info.details.pop();
 this.setData({
  info: info
 });
 },

})

这时候,能对view动态增删了,那么对数据怎么处理,给每个生成的view添加id属性,通过id属性来判断操作的是哪个Detail类。js部分代码如下:

setPlace: function (e) {
 let index = parseInt(e.currentTarget.id.replace("place-", ""));
 let place = e.detail.value;
 let info = this.data.info;
 info.details[index].placeName = place;
 this.setData({
  info: info
 });
 },
setNumber: function (e) {
 let index = parseInt(e.currentTarget.id.replace("number-", ""));
 let number = e.detail.value;
 let info = this.data.info;
 info.details[index].number = number;
 this.setData({
  info: info
 });
 },

总结

以上所述是小编给大家介绍的微信小程序动态添加view组件的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript cookie操作类的实现代码小结附使用方法
Jun 02 Javascript
javascript loadScript异步加载脚本示例讲解
Nov 14 Javascript
jQuery学习笔记之总体架构
Jun 03 Javascript
JSONP跨域GET请求解决Ajax跨域访问问题
Dec 31 Javascript
JS函数this的用法实例分析
Feb 05 Javascript
jquery-tips悬浮提示插件分享
Jul 31 Javascript
js数组如何添加json数据及js数组与json的区别
Oct 27 Javascript
前端构建工具之gulp的配置与搭建详解
Jun 12 Javascript
babel的使用及安装配置教程
Feb 22 Javascript
浅谈Vue 性能优化之深挖数组
Dec 11 Javascript
使用 vue 实现灭霸打响指英雄消失的效果附demo
May 06 Javascript
js实现复制粘贴的两种方法
Dec 04 Javascript
Vue+Element实现动态生成新表单并添加验证功能
May 23 #Javascript
vue elementui el-form rules动态验证的实例代码详解
May 23 #Javascript
vue.js表单验证插件(vee-validate)的使用教程详解
May 23 #Javascript
使用vue自定义指令开发表单验证插件validate.js
May 23 #Javascript
微信小程序开发实现消息推送
Nov 18 #Javascript
jQuery操作attr、prop、val()/text()/html()、class属性
May 23 #jQuery
js打开word文档预览操作示例【不是下载】
May 23 #Javascript
You might like
codeigniter教程之上传视频并使用ffmpeg转flv示例
2014/02/13 PHP
php获取目标函数执行时间示例
2014/03/04 PHP
php中session使用示例
2014/03/29 PHP
Smarty高级应用之缓存操作技巧分析
2016/05/14 PHP
PHP创建自己的Composer包方法
2018/04/09 PHP
windows环境下使用Composer安装ThinkPHP5
2018/05/18 PHP
详解php伪造Referer请求反盗链资源
2019/01/24 PHP
php根据命令行参数生成配置文件详解
2019/03/15 PHP
PHP实现的文件浏览器功能简单示例
2019/09/12 PHP
浅谈laravel框架与thinkPHP框架的区别
2019/10/23 PHP
laravel 创建命令行命令的图文教程
2019/10/23 PHP
javascript椭圆旋转相册实现代码
2012/01/16 Javascript
js数值和和字符串进行转换时可以对不同进制进行操作
2014/03/05 Javascript
js实现按钮加背景图片常用方法
2014/11/01 Javascript
javascript实现状态栏中文字动态显示的方法
2015/10/20 Javascript
JavaScript之Vue.js【入门基础】
2016/12/06 Javascript
nodejs socket服务端和客户端简单通信功能
2017/09/14 NodeJs
VsCode插件整理(小结)
2017/09/14 Javascript
微信小程序 简易计算器实现代码实例
2019/09/02 Javascript
vue element upload组件 file-list的动态绑定实现
2019/10/11 Javascript
在Heroku云平台上部署Python的Django框架的教程
2015/04/20 Python
VSCode下配置python调试运行环境的方法
2018/04/06 Python
Python基于pycrypto实现的AES加密和解密算法示例
2018/04/10 Python
对Python中内置异常层次结构详解
2018/10/18 Python
python画柱状图--不同颜色并显示数值的方法
2018/12/13 Python
python 实现简单的计算器(gui界面)
2020/11/11 Python
python 如何引入协程和原理分析
2020/11/30 Python
全网最全python库selenium自动化使用详细教程
2021/01/12 Python
购买大码女装:Lane Bryant
2016/09/07 全球购物
KENZO官网:高田贤三在法国创立的品牌
2019/05/16 全球购物
如何保障Web服务器安全
2014/05/05 面试题
银行见习期自我鉴定
2014/01/29 职场文书
优秀求职信
2014/05/29 职场文书
会计求职自荐信
2015/03/26 职场文书
房地产置业顾问岗位职责
2015/04/11 职场文书
Python获取指定日期是"星期几"的6种方法
2022/03/13 Python