一、小程序基本数据绑定
字符串、对象


<!-- 字符串 -->
<view>{{ userName }}</view>
<!-- 数字运算 -->
<view>{{ age + 1 }}</view>
<!-- 布尔值控制属性 -->
<view hidden="{{ isHidden }}">根据 isHidden 显示/隐藏</view>Page({
data: {
userName: "Alice",
age: 25,
isHidden: false
}
})二、对象属性绑定
<view>{{ userInfo.name }}</view>
<view>手机号:{{ userInfo.phone }}</view>Page({
data: {
userInfo: {
name: "Bob",
phone: "13800138000"
}
}
})修改对象属性需通过 setData 指定完整路径
this.setData({
'userInfo.name': 'Carol' // 路径字符串写法
})三、数组绑定与循环渲染
1、渲染数组
使用 wx:for 遍历数组,默认是当前项变量为item 下标为index
<view wx:for="{{items}}" wx:key="id">
{{index + 1}}. {{item.name}}
</view>Page({
data: {
items: [
{ id: 1, name: "苹果" },
{ id: 2, name: "香蕉" }
]
}
})2、修改数组
需要建新数组或使用路径更新:
// 添加新项
this.setData({
items: [...this.data.items, { id: 3, name: "橙子" }]
});
// 修改第一项
this.setData({
'items[0].name': '红苹果'
});wx:for 循环需要指定wx:for 提高渲染效率
四、表单输入的双向绑定
value 绑定数据 + bindinput 事件更新实现双向同步
<input
value="{{inputValue}}"
bindinput="onInput"
placeholder="输入内容"
/>
<view>实时预览:{{inputValue}}</view>Page({
data: { inputValue: '' },
onInput(e) {
this.setData({
inputValue: e.detail.value // 更新输入框值
});
}
})扩展:
如果单字段较多,可用 data- 属性标识字段名 减少事件函数
<input bindinput="bindInput" data-field="userName" />
bindInput(e) {
const field = e.currentTarget.dataset.field;
this.setData({
[`formData.${field}`]: e.detail.value
});
}五、特殊绑定方式
1、样式与类名绑定
<!-- 动态 class -->
<view class="{{ isActive ? 'active' : '' }}">样式</view>
<!-- 内联 style -->
<view style="color: {{textColor}};">文字</view>2、使用扩展运算符展开对象
<template data="{{ ...obj1, ...obj2, extra: 100 }}"></template>3、条件渲染 wx:if vs hidden
wx:if:动态添加/移除节点,适合变动少的场景。hidden:切换 CSS 显示,适合频繁切换。
<view wx:if="{{score > 60}}">及格</view>
<view hidden="{{!isVisible}}">始终存在但显隐控制</view>