微信小程序动态添加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 相关文章推荐
js对数字的格式化使用说明
Jan 12 Javascript
javascript full screen 全屏显示页面元素的方法
Sep 27 Javascript
javascript中局部变量和全局变量的区别详解
Feb 27 Javascript
jQuery查找节点方法完整实例
Sep 13 Javascript
使用JavaScript触发过渡效果的方法
Jan 19 Javascript
Bootstrap栅格系统简单实现代码
Mar 06 Javascript
js a标签点击事件
Mar 30 Javascript
安装vue-cli报错 -4058 的解决方法
Oct 19 Javascript
Vue表单之v-model绑定下拉列表功能
May 14 Javascript
vue element-ui中table合计指定列求和实例
Nov 02 Javascript
关于javascript中的promise的用法和注意事项(推荐)
Jan 15 Javascript
JavaScript WeakMap使用详解
Feb 05 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类
2006/07/15 PHP
php常用字符串比较函数实例汇总
2014/11/24 PHP
PHP简单选择排序算法实例
2015/01/26 PHP
Laravel基础_关于view共享数据的示例讲解
2019/10/14 PHP
Firefox getBoxObjectFor getBoundingClientRect联系
2008/10/26 Javascript
javascript动态加载实现方法一
2012/08/22 Javascript
js单向链表的具体实现实例
2013/06/21 Javascript
Extjs 4.x 得到form CheckBox 复选框的值
2014/05/04 Javascript
Position属性之relative用法
2015/12/14 Javascript
JavaScript实现获取远程的html到当前页面中
2017/03/26 Javascript
vue项目中使用axios上传图片等文件操作
2017/11/02 Javascript
JavaScript的数据类型转换原则(干货)
2018/03/15 Javascript
jquery.param()实现数组或对象的序列化方法
2018/10/08 jQuery
layui实现form表单同时提交数据和文件的代码
2019/10/25 Javascript
在Django中限制已登录用户的访问的方法
2015/07/23 Python
Python生成8位随机字符串的方法分析
2017/12/05 Python
Python IDLE清空窗口的实例
2018/06/25 Python
Python3爬虫学习之应对网站反爬虫机制的方法分析
2018/12/12 Python
Pandas之Dropna滤除缺失数据的实现方法
2019/06/25 Python
python中字典按键或键值排序的实现代码
2019/08/27 Python
python wxpython 实现界面跳转功能
2019/12/17 Python
html5新特性与用法大全
2018/09/13 HTML / CSS
HTML5 Canvas如何实现纹理填充与描边(Fill And Stroke)
2013/07/15 HTML / CSS
开放系统互连参考模型
2016/06/29 面试题
高级护理专业大学生求职信
2013/10/24 职场文书
会计专业自荐信
2013/12/02 职场文书
理工类毕业自我鉴定
2014/02/20 职场文书
优秀教师演讲稿
2014/05/06 职场文书
考试诚信承诺书
2014/05/23 职场文书
乡镇八一建军节活动方案
2014/08/24 职场文书
教师四风问题对照检查材料
2014/09/26 职场文书
三方协议书
2015/01/27 职场文书
幼儿园教师师德承诺书
2015/04/28 职场文书
酒店工程部的岗位职责汇总大全
2019/10/23 职场文书
vue组件的路由高亮问题解决方法
2021/05/11 Vue.js
SQL Server作业失败:无法确定所有者是否有服务器访问权限的解决方法
2021/06/30 SQL Server