计算机网络/计算机科学与应用/系统/运维/开发

小程序_基本绑定数据_对象属性_数组与循环_表单输入双向绑定_特殊绑定方式

一、小程序基本数据绑定

字符串、对象


image.png

image.png


<!-- 字符串 -->
<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>


若无人替你披荆斩棘,那就独自前行栉风沐雨。

评论

^