上一章弄出来多选框的数据是固定、事先写好的,这当然不是个能用的待办小程序。
本章将其改造为可添加新条目的动态数据,让程序活动起来。
视图层
既然要添加新数据,那必然得有一个输入框。除此之外还得有提交按钮,以便让程序知道什么时候应该记录新数据。
修改 pages/index/index.wxml ,在根元素 <view> 的头部添加代码:
<!-- pages/index/index.wxml --><view class="container"> <!-- 在container的头部添加新代码 --> <view class="list-input"> <!-- 输入框本体 --> <view class="weui-cell weui-cell_input"> <input value="{{inputedValue}}" bind:input="keyInput" class="weui-input" maxlength="50" placeholder="请输入待办事项" /> </view> <!-- 分割线 --> <view class="line"></view> <!-- 提交按钮 --> <button bind:tap="inputSubmit" class="weui-btn" type="default" >提交</button> </view> <!-- 上一章的其他代码在下面这里 --> <!-- ... --></view>
总共添加了输入框、分割线和提交按钮三个元素,分别来看。
- 数据框:最核心的部分就是 value 和 bind:input 这两个属性。 value 与逻辑层数据 inputedValue 进行绑定,只要 inputedValue 改变,那么输入框中的内容也跟着改变。 bind:input 监听输入事件,调用逻辑层的 keyInput 方法以操作数据。(逻辑层也就是 index.js 文件)
- 分割线:不像传统网页开发,小程序没有提供现成的 <hr> 标签,因此要通过 .wxss 样式文件封装一个。(马上讲)
- 提交按钮:绑定了按钮点击事件 inputSubmit() 。
同样的,WeUI 的样式定义比如 weui-cell 就不展开讲了,有需要直接到官方文档抄即可。
接下来,定义 .line 、 .list-input 的外观样式。
修改 pages/index/index.wxss 文件:
/* pages/index/index.wxss */.list-input { padding-top: 30rpx; padding-bottom: 50rpx;}.line { width: 100%; height: 3rpx; background: #ddd; margin-bottom: 20rpx;}
与传统 .css 样式稍有区别的是,小程序有自己的尺寸单位,即 rpx 。这个单位将各类不同屏幕尺寸的移动设备做了映射,尽可能保证页面元素在各设备上的外观一致。
详细了解见wxss尺寸。
逻辑层
搞定视图层后,来整激动人心的逻辑层。
修改 pages/index/index.js 文件如下:
Component({ // 页面持有的数据 data: { // todo-list数据 items: [], // 输入框当前内容 inputedValue: "", }, methods: { // 监听键盘输入事件 keyInput(e) { this.setData({ inputedValue: e.detail.value }) }, // 监听提交按钮 inputSubmit() { let items = JSON.parse(JSON.stringify(this.data.items)) // 设置新条目的id let newID = 1; if (items[0] !== undefined) { newID = items[0].id + 1; } // 将新条目更新到items中 // 并将输入框的值清空 items.unshift({ id: newID, content: this.data.inputedValue, checked: false, }); this.setData({ items: items, inputedValue: "", }) }, // 已有代码 checkboxChange(e) { // ... },})
拆解如下:
- data 部分:将 items 初始化为空数组,我们已经不需要固定的内容了。新增数据 inputedValue ,仔细看它也是和视图层对应的,绑定了输入框的值。
- methods 部分:keyInput() 方法根据输入值,实时更新 inputedValue 的值。inputSubmit() 也不复杂,每当用户点击了提交按钮,此方法就将新条目的 id 值、待办内容 content 、以及完成状态 checked 设置好;最后将新数据更新回状态 items 中,并且将 inputedValue 置空以便等待下一次的输入。
大功告成!看看效果:
1.文章《微信小程序输入框的大小》援引自互联网,为网友投稿收集整理,仅供学习和研究使用,内容仅代表作者本人观点,与本网站无关,侵删请点击页脚联系方式。
2.文章《微信小程序输入框的大小》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
相关推荐
- . 现代买票为什么带上携程保险
- . 潮阳怎么去广州南站
- . 湖南马拉河怎么样
- . 烧纸为什么到三岔路口
- . 百色为什么这么热
- . 神州租车怎么样
- . 芜湖方特哪个适合儿童
- . 护肤品保养液是什么类目
- . 早晚的护肤保养有哪些项目
- . 女孩护肤品怎么保养的最好