微信小程序动态添加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系列(16) 闭包(Closures)
Apr 12 Javascript
简单谈谈jQuery(function(){})与(function(){})(jQuery)
Dec 19 Javascript
javascript修改图片src的方法
Jan 27 Javascript
jQuery实现简单的列表式导航菜单效果代码
Aug 31 Javascript
JavaScript实现鼠标点击导航栏变色特效
Feb 08 Javascript
JavaScript生成图形验证码
Aug 24 Javascript
vue实现移动端图片裁剪上传功能
Aug 18 Javascript
JavaScript登录验证基础教程
Nov 01 Javascript
浅谈AngularJs 双向绑定原理(数据绑定机制)
Dec 07 Javascript
学习Vue组件实例
Apr 28 Javascript
layui select 禁止点击的实现方法
Sep 05 Javascript
JS实现水平移动与垂直移动动画
Dec 19 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错误和异长常处理总结
2014/03/06 PHP
PHP MYSQL实现登陆和模糊查询两大功能
2016/02/05 PHP
postfixadmin忘记密码后的修改密码方法详解
2016/07/20 PHP
ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法
2017/06/09 PHP
thinkPHP5框架auth权限控制类与用法示例
2018/06/12 PHP
jQuery 学习 几种常用方法
2009/06/11 Javascript
用JavaScript隐藏控件的方法
2009/09/21 Javascript
JS 树形递归实例代码
2010/05/18 Javascript
利用JQuery和JS实现奇偶行背景颜色自定义效果
2012/11/19 Javascript
详解Javascript中prototype属性(推荐)
2016/09/03 Javascript
微信小程序上线发布流程图文详解
2019/05/06 Javascript
js/jQuery实现全选效果
2019/06/17 jQuery
JavaScript实现随机点名程序
2020/03/25 Javascript
详解datagrid使用方法(重要)
2020/11/06 Javascript
[01:45]2014DOTA2 TI预选赛预选赛 战前探营!
2014/05/21 DOTA
[03:03]2014DOTA2西雅图国际邀请赛 Alliance战队巡礼
2014/07/07 DOTA
python解析xml文件操作实例
2014/10/05 Python
通过Python爬虫代理IP快速增加博客阅读量
2016/12/14 Python
python利用OpenCV2实现人脸检测
2020/04/16 Python
Python2中文处理纪要的实现方法
2018/03/10 Python
Windows下Python3.6安装第三方模块的方法
2018/11/22 Python
深入理解Python异常处理的哲学
2019/02/01 Python
解决Python3 控制台输出InsecureRequestWarning问题
2019/07/15 Python
Python读取YAML文件过程详解
2019/12/30 Python
python爬取网易云音乐热歌榜实例代码
2020/08/07 Python
C#笔试题和英文面试题
2013/02/07 面试题
财务部出纳岗位职责
2013/12/22 职场文书
学校七一活动方案
2014/01/19 职场文书
求职信结尾怎么写
2014/05/26 职场文书
运动会口号大全
2014/06/07 职场文书
小学校园文化建设汇报材料
2014/08/19 职场文书
乡镇干部个人对照检查材料(群众路线)
2014/09/26 职场文书
2015年社区国庆节活动总结
2015/07/30 职场文书
Python使用UDP实现720p视频传输的操作
2021/04/24 Python
go语言中GOPATH GOROOT的作用和设置方式
2021/05/05 Golang
Python Django搭建文件下载服务器的实现
2021/05/10 Python