微信小程序动态添加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实现动画效果的实例代码
May 07 Javascript
jQuery阻止事件冒泡具体实现
Oct 11 Javascript
JavaScript 事件对象介绍
Apr 13 Javascript
pace.js页面加载进度条插件
Sep 29 Javascript
JavaScript表单验证的两种实现方法
Feb 11 Javascript
JS获取鼠标位置距浏览器窗口距离的方法示例
Apr 11 Javascript
JavaScript取得gridview中获取checkbox选中的值
Jul 24 Javascript
vue将对象新增的属性添加到检测序列的方法
Feb 24 Javascript
JS实现判断图片是否加载完成的方法分析
Jul 31 Javascript
vue-router判断页面未登录自动跳转到登录页的方法示例
Nov 04 Javascript
jQuery实现手风琴效果(蒙版)
Jan 11 jQuery
关于javascript中的promise的用法和注意事项(推荐)
Jan 15 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
用Apache反向代理设置对外的WWW和文件服务器
2006/10/09 PHP
十天学会php之第二天
2006/10/09 PHP
PHP 转义使用详解
2013/07/15 PHP
php文件缓存类汇总
2014/11/21 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
通过event对象的fromElement属性解决热区设置主实体的一个bug
2008/12/22 Javascript
javascript 上下banner替换具体实现
2013/11/14 Javascript
使用Browserify配合jQuery进行编程的超级指南
2015/07/28 Javascript
Bootstrap每天必学之媒体对象
2015/11/30 Javascript
JS返回只包含数字类型的数组实例分析
2016/12/16 Javascript
详解Node.js开发中的express-session
2017/05/19 Javascript
详解webpack和webpack-simple中如何引入css文件
2017/06/28 Javascript
vue音乐播放器插件vue-aplayer的配置及其使用实例详解
2017/07/10 Javascript
angular $watch 一个变量的变化(实例讲解)
2017/08/02 Javascript
JavaScript requestAnimationFrame动画详解
2017/09/14 Javascript
JS简单实现数组去重的方法分析
2017/10/14 Javascript
Vue.js 点击按钮显示/隐藏内容的实例代码
2018/02/08 Javascript
简单了解vue中父子组件如何相互传递值(基础向)
2019/07/12 Javascript
Django URL传递参数的方法总结
2016/08/28 Python
使用python实现ANN
2017/12/20 Python
基于并发服务器几种实现方法(总结)
2017/12/29 Python
Django中的文件的上传的几种方式
2018/07/23 Python
在python环境下运用kafka对数据进行实时传输的方法
2018/12/27 Python
PyTorch实现ResNet50、ResNet101和ResNet152示例
2020/01/14 Python
python super函数使用方法详解
2020/02/14 Python
基于打开pycharm有带图片md文件卡死问题的解决
2020/04/24 Python
Python中bisect的用法及示例详解
2020/07/20 Python
Python实现异步IO的示例
2020/11/05 Python
CSS3新增布局之: flex详解
2020/06/18 HTML / CSS
HTML5中的进度条progress元素简介及兼容性处理
2016/06/02 HTML / CSS
迟到检讨书1000字
2014/01/15 职场文书
交通事故协议书范文
2014/10/23 职场文书
保研导师推荐信
2015/03/25 职场文书
2015年底工作总结范文
2015/05/15 职场文书
部分武汉产收音机展览
2022/04/07 无线电