微信小程序动态添加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 js cookie的存储,获取和删除
Dec 29 Javascript
用JavaScript显示随机图像或引用
Apr 21 Javascript
浅谈JavaScript Date日期和时间对象
Dec 29 Javascript
基于bootstrap插件实现autocomplete自动完成表单
May 07 Javascript
jQuery动态增减行的实例代码解析(推荐)
Dec 05 Javascript
canvas快速绘制圆形、三角形、矩形、多边形方法介绍
Dec 29 Javascript
使用Bootstrap美化按钮实例代码(demo)
Feb 03 Javascript
fullPage.js和CSS3实现全屏滚动效果
May 05 Javascript
react-native使用react-navigation进行页面跳转导航的示例
Sep 07 Javascript
浅谈JS函数节流防抖
Oct 18 Javascript
vue刷新和tab切换实例
Feb 11 Javascript
vue2.0 如何在hash模式下实现微信分享
Jan 22 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 mssql 时间格式问题
2009/01/13 PHP
PHP设计模式之代理模式的深入解析
2013/06/13 PHP
PHP常用的缓存技术汇总
2014/05/05 PHP
跟我学Laravel之配置Laravel
2014/10/15 PHP
ThinkPHP框架实现数据增删改
2017/05/07 PHP
把html页面的部分内容保存成新的html文件的jquery代码
2009/11/12 Javascript
事件冒泡是什么如何用jquery阻止事件冒泡
2013/03/20 Javascript
jquery 新建的元素事件绑定问题解决方案
2014/06/12 Javascript
火狐下input焦点无法重复获取问题的解决方法
2014/06/16 Javascript
使用JavaScript开发IE浏览器本地插件实例
2015/02/18 Javascript
JavaScript原生对象之String对象的属性和方法详解
2015/03/13 Javascript
jQuery实现鼠标经过提示信息的地图热点效果
2015/04/26 Javascript
vue.js实现数据动态响应 Vue.set的简单应用
2017/06/15 Javascript
Vue中添加手机验证码组件功能操作方法
2017/12/07 Javascript
基于vue cli重构多页面脚手架过程详解
2018/01/23 Javascript
Vuex的初探与实战小结
2018/11/26 Javascript
jQuery利用FormData上传文件实现批量上传
2018/12/04 jQuery
小程序瀑布流组件实现翻页与图片懒加载
2020/05/19 Javascript
在Vue中使用mockjs代码实例
2020/11/25 Vue.js
Python中文分词工具之结巴分词用法实例总结【经典案例】
2017/04/15 Python
Python实现两个list对应元素相减操作示例
2017/06/09 Python
python3 shelve模块的详解
2017/07/08 Python
Pandas的read_csv函数参数分析详解
2019/07/02 Python
Python模块future用法原理详解
2020/01/20 Python
Keras 利用sklearn的ROC-AUC建立评价函数详解
2020/06/15 Python
Python如何使用ElementTree解析xml
2020/10/12 Python
ALLSAINTS英国官网:伦敦新锐潮流品牌
2016/09/19 全球购物
UGG澳洲官网:UGG Australia
2018/04/26 全球购物
法国票务网站:Ticketmaster法国
2018/07/09 全球购物
Java基础知识面试要点
2016/07/29 面试题
程序员经常用到的UNIX命令
2015/04/13 面试题
学习党章思想汇报
2014/01/07 职场文书
学习张林森心得体会
2014/09/10 职场文书
2014年班务工作总结
2014/12/02 职场文书
团拜会主持词
2015/07/04 职场文书
pytorch 中autograd.grad()函数的用法说明
2021/05/12 Python