>>跟着b站up主“咸虾米_”学习微信小程序开发中,把学习记录存到这方便后续查找。
课程连接:3.10.【小案例】表单提交样式布局与model双向绑定_哔哩哔哩_bilibili
一、model简易双向绑定
简单双向绑定语法查阅:小程序框架 / 视图层 / 简易双向绑定 (qq.com)
如果使用 this.setData({ value: 'leaf' })
来更新 value
,this.data.value
和输入框的中显示的值都会被更新为 leaf
;但如果用户修改了输入框里的值,却不会同时改变 this.data.value
。如果需要在用户输入的同时改变 this.data.value
,需要借助简易双向绑定机制。此时,可以在对应项目之前加入 model:
前缀:
<input model:value="{{value}}" />
二、代码
1、formKT.wxml
<view class="title">
狂飙经典语录
</view>
<view class="out">
<view class="list">
<view class="row" wx:for="{{listArr}}" wx:key="id"> <!--for循环遍历数组listArr中的每个对象-->
<view class="text">{{index+1}}. {{item.title}}</view> <!--item就是listArr中的每一个对象,.title就是获取每个对象的title值-->
<view class="close">
<icon type="clear" size="26"/>
</view>
</view>
</view>
<view class="count">
共3条评论
</view>
<view class="comment">
<input type="text"
placeholder="请输入评论内容..."
placeholder-style="color:#aaa;font-size:28rpx"
model:value="{{iptValue}}"
/>
<button size="mini" type="primary" disabled="{{!iptValue.length}}"
>发布</button>
</view>
</view>
input的通用属性查阅:表单组件 / input (qq.com)
iptValue初始设置为空值,input组件的value值为输入框的内容,在前面加上一个model之后可以实现双向绑定,在js文件中通过 this.setData({ iptvalue: 'leaf' })
能够改变输入框内文字的显示,同时输入框内输入其他内容也可以改变iptValue的值。
故而button中根据iptvalue
的长度来确定“发布”按钮什么时候可以点击,当输入框内没有输入内容时长度为,通过“!”取反,则为1,按钮不能点击,当输入框内有内容时长度非0,通过“!”取反,则为0,按钮能点击。
2、formKT.wxss
/* pages/formKT/formKT.wxss */
.title{
font-size: 50rpx;
text-align: center;
color:#3c3c3c;
padding:60rpx 0 30rpx;
}
.out{
width: 690rpx;
margin:30rpx;
box-shadow: 0 15rpx 40rpx rgba(0,0,0,0.1);
border-radius: 10rpx;
padding:30rpx;
box-sizing: border-box;
}
.out .list .row{
padding:15rpx 0;
border-bottom:1rpx solid #e8e8e8;
display: flex;
justify-content: space-between;
align-items: center;
font-size: 34rpx;
color:#333;
}
.out .list .row .text{
padding-right: 10rpx;
box-sizing: border-box;
}
.out .count{
padding:20rpx 0;
font-size: 30rpx;
color:#888;
text-align:center;
}
.out .comment{
display: flex;
margin-top:20rpx;
}
.out .comment input{
flex:4;
background: #f4f4f4;
margin-right: 10rpx;
height: 100%;
height: 64rpx;
border-radius: 8rpx;
padding:0 20rpx;
color:#333;
}
.out .comment button{
flex:1;
}
3、fromKT.js,将data部分改为如下代码
data: {
iptValue:"",
listArr:[
{id:123,title:"告诉老莫我要吃鱼"},
{id:456,title:"咖啡不冲,迟早成功"},
{id:789,title:"妻管严很幸福的哦"}
]
},
和3.11是同一个小案例