微信小程序动态添加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 相关文章推荐
Jquery+JSon 无刷新分页实现代码
Apr 01 Javascript
JS 自定义函数缺省值的设置方法
May 05 Javascript
基于jQuery中对数组进行操作的方法
Apr 16 Javascript
JQuery的$和其它JS发生冲突的快速解决方法
Jan 24 Javascript
Javascript数组与字典用法分析
Dec 13 Javascript
jQuery中get()方法用法实例
Dec 27 Javascript
Bootstrap 附加导航(Affix)插件实例详解
Jun 01 Javascript
bootstrap datetimepicker日期插件使用方法
Jan 13 Javascript
基于vue中解决v-for使用报红并出现警告的问题
Mar 03 Javascript
详解Vue+Element的动态表单,动态表格(后端发送配置,前端动态生成)
Apr 20 Javascript
Vue-cli3.X使用px2 rem遇到的问题及解决方法
Aug 08 Javascript
解决VUEX的mapState/...mapState等取值问题
Jul 24 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
PHP和XSS跨站攻击的防范
2007/04/17 PHP
YII模块实现绑定二级域名的方法
2014/07/09 PHP
PHP下载生成的csv文件及问题总结
2015/08/06 PHP
Yii 2.0在Grid中格式化时间方法示例
2017/06/06 PHP
总结PHP内存释放以及垃圾回收
2018/03/29 PHP
很可爱的输入框
2008/08/03 Javascript
javascript mouseover、mouseout停止事件冒泡的解决方案
2009/04/07 Javascript
悄悄用脚本检查你访问过哪些网站的代码
2010/12/04 Javascript
为jQuery添加Webkit的触摸的方法分享
2014/02/02 Javascript
node.js中的fs.readSync方法使用说明
2014/12/17 Javascript
浅谈JS中json数据的处理
2016/06/30 Javascript
微信小程序 页面传值详解
2017/03/10 Javascript
mpvue+vant app搭建微信小程序的方法步骤
2019/02/11 Javascript
JavaScript函数的4种调用方法实例分析
2019/03/05 Javascript
微信小程序点餐系统开发常见问题汇总
2019/08/06 Javascript
使用JS location实现搜索框历史记录功能
2019/12/23 Javascript
vue调用本地摄像头实现拍照功能
2020/08/14 Javascript
详解Django缓存处理中Vary头部的使用
2015/07/24 Python
Python for Informatics 第11章之正则表达式(二)
2016/04/21 Python
基于python爬虫数据处理(详解)
2017/06/10 Python
用python3教你任意Html主内容提取功能
2018/11/05 Python
基于Python和PyYAML读取yaml配置文件数据
2020/01/13 Python
tensorflow求导和梯度计算实例
2020/01/23 Python
Django-rest-framework中过滤器的定制实例
2020/04/01 Python
python实现飞船游戏的纵向移动
2020/04/24 Python
pandas 像SQL一样使用WHERE IN查询条件说明
2020/06/05 Python
Python Excel vlookup函数实现过程解析
2020/06/22 Python
keras CNN卷积核可视化,热度图教程
2020/06/22 Python
浅谈Python xlwings 读取Excel文件的正确姿势
2021/02/26 Python
亿阳信通股份有限公司C#笔试题
2016/12/06 面试题
会计人员岗位职责
2014/03/19 职场文书
股东协议书
2014/04/14 职场文书
幼儿园中班上学期评语
2014/04/18 职场文书
第二课堂活动总结
2014/05/07 职场文书
党员反四风学习心得体会
2016/01/22 职场文书
mysql中varchar类型的日期进行比较、排序等操作的实现
2021/11/17 MySQL