微信小程序动态添加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 Array Flatten 与递归使用介绍
Oct 30 Javascript
JavaScript 在网页上单击鼠标的地方显示层及关闭层
Dec 30 Javascript
html组件不可输入(只读)同时任何组件都有效
Apr 01 Javascript
node.js中的http.response.getHeader方法使用说明
Dec 14 Javascript
jQuery动态加载css文件实现方法
Jun 15 Javascript
BootStrap 实现各种样式的进度条效果
Dec 07 Javascript
AngularJS折叠菜单实现方法示例
May 18 Javascript
jQuery.Ajax()的data参数类型详解
Jul 23 jQuery
Dropify.js图片宽高自适应的方法
Nov 27 Javascript
微信小程序实现slideUp、slideDown滑动效果及点击空白隐藏功能示例
Dec 11 Javascript
node crawler如何添加promise支持
Feb 01 Javascript
Node快速切换版本、版本回退(降级)、版本更新(升级)
Jan 07 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防注入安全代码
2008/04/09 PHP
php列出一个目录下的所有文件的代码
2012/10/09 PHP
zf框架的db类select查询器join链表使用示例(zend框架)
2014/03/14 PHP
php获得客户端浏览器名称及版本的方法(基于ECShop函数)
2015/12/23 PHP
php使用get_class_methods()函数获取分类的方法
2016/07/20 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
2017/08/28 PHP
PHP变量的作用范围实例讲解
2020/12/22 PHP
jQuery中与toggleClass等价的程序段 以及未来学习的方向
2010/03/18 Javascript
在线一元二次方程计算器实例(方程计算器在线计算)
2013/12/22 Javascript
jQueryMobile之Helloworld与页面切换的方法
2015/02/04 Javascript
JS简单实现城市二级联动选择插件的方法
2015/08/19 Javascript
JavaScript动态设置div的样式的方法
2015/12/26 Javascript
详解JavaScript中this的指向问题
2017/01/20 Javascript
Vue 2.0中生命周期与钩子函数的一些理解
2017/05/09 Javascript
NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解
2017/05/13 NodeJs
基于Vue2.0+ElementUI实现表格翻页功能
2017/10/23 Javascript
Ruby使用eventmachine为HTTP服务器添加文件下载功能
2016/04/20 Python
用Python+OpenCV对比图像质量的几种方法
2019/07/15 Python
win10下python2和python3共存问题解决方法
2019/12/23 Python
Python调用.NET库的方法步骤
2019/12/27 Python
Python *args和**kwargs用法实例解析
2020/03/02 Python
Python 调用有道翻译接口实现翻译
2020/03/02 Python
DataFrame.groupby()所见的各种用法详解
2020/06/14 Python
python3.9和pycharm的安装教程并创建简单项目的步骤
2021/02/03 Python
详解canvas绘制多张图的排列顺序问题
2019/01/21 HTML / CSS
Kathmandu英国网站:新西兰户外运动品牌
2017/03/27 全球购物
最新大学生自我评价
2013/09/24 职场文书
20年同学聚会邀请函
2014/02/04 职场文书
新任教师自我鉴定
2014/02/24 职场文书
大学四年个人的自我评价
2014/02/26 职场文书
学校感恩教育活动总结
2014/07/07 职场文书
我们的节日国庆活动方案
2014/08/19 职场文书
出国签证在职证明
2014/09/20 职场文书
青岛导游词
2015/02/12 职场文书
廉政承诺书2015
2015/04/28 职场文书
python 模拟在天空中放风筝的示例代码
2021/04/21 Python