微信小程序动态添加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 asp.net 获取当前超链接中的文本
Apr 14 Javascript
Js实现当前点击a标签变色突出显示其他a标签回复原色
Nov 27 Javascript
json中换行符的处理方法示例介绍
Jun 10 Javascript
jfinal与bootstrap的登录跳转实战演习
Sep 22 Javascript
基于jQuery实现返回顶部实例代码
Jan 01 Javascript
js实现按钮控制带有停顿效果的图片滚动
Aug 30 Javascript
完美解决input[type=number]无法显示非数字字符的问题
Feb 28 Javascript
JavaScript实现图片无缝滚动效果
Jul 07 Javascript
200行代码实现blockchain 区块链实例详解
Mar 14 Javascript
微信小程序登录session的使用
Mar 17 Javascript
JS操作字符串转数字的常见方法示例
Oct 29 Javascript
JavaScript缺少insertAfter解决方案
Jul 03 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
咖啡的植物学知识
2021/03/03 咖啡文化
php获取字段名示例分享
2014/03/03 PHP
php四种定界符详解
2017/02/16 PHP
Laravel中服务提供者和门面模式的入门介绍
2017/11/06 PHP
一个JS翻页效果
2007/07/23 Javascript
什么是JavaScript
2009/08/13 Javascript
chrome下jq width()方法取值为0的解决方法
2014/05/26 Javascript
ff chrome和ie下全局动态定位的异同及全局高度的取法
2014/06/30 Javascript
JavaScript获取表单内所有元素值的方法
2015/04/02 Javascript
jQuery实现限制textarea文本框输入字符数量的方法
2015/05/28 Javascript
jQuery根据元素值删除数组元素的方法
2015/06/24 Javascript
jQuery热气球动画半透明背景的后台登录界面代码分享
2015/08/28 Javascript
JS中call/apply、arguments、undefined/null方法详解
2016/02/15 Javascript
基于jQuery实现Ajax验证用户名是否存在实例
2016/03/30 Javascript
去除html代码里面的script正则方法
2016/05/19 Javascript
使用bootstrap实现多窗口和拖动效果
2016/09/22 Javascript
vue router的基本使用和配置教程
2018/11/05 Javascript
layui 图片上传+表单提交+ Spring MVC的实例
2019/09/21 Javascript
linux系统使用python监测网络接口获取网络的输入输出
2014/01/15 Python
python连接mysql并提交mysql事务示例
2014/03/05 Python
python中文件变化监控示例(watchdog)
2017/10/16 Python
Python文件读写常见用法总结
2019/02/22 Python
DataFrame.groupby()所见的各种用法详解
2020/06/14 Python
ORLY官网:美国专业美甲一线品牌
2019/12/11 全球购物
法律顾问服务方案
2014/05/15 职场文书
同志主要表现材料
2014/08/21 职场文书
离婚律师函范本
2015/05/27 职场文书
工作证明书
2015/06/15 职场文书
python爬不同图片分别保存在不同文件夹中的实现
2021/04/02 Python
Python极值整数的边界探讨分析
2021/09/15 Python
java代码实现空间切割
2022/01/18 Java/Android
vue-cil之axios的二次封装与proxy反向代理使用说明
2022/04/07 Vue.js
JavaWeb Servlet开发注册页面实例
2022/04/11 Java/Android
python和C/C++混合编程之使用ctypes调用 C/C++的dll
2022/04/29 Python
MySQL数据库Innodb 引擎实现mvcc锁
2022/05/06 MySQL
MySQL范围查询优化的场景实例详解
2022/06/10 MySQL