2024-12-26
所有数据都要在Page()方法的data对象中声明。
需要用双大括号写法{{}}
{{}}内部可以进行简单运算,比如算数、三元、逻辑等。但只能写表达式,不能写语句。
// index.js
Page({
// 在小程序页面中所需要使用的数据均来自于 data 对象
data: {
id: 1,
isChecked: false,
school: '尚硅谷',
obj: {
name: 'tom'
}
}
})
setData() 方法有两个作用:
1. 更新数据
2. 驱动视图
console.log(this.data.num)
this.setData({
// key:是需要更新的数据
// value:是最新的值
num: this.data.num + 1
})
this.setData({
// 如果给对象新增属性,可以将 key 写成数据路径的方式 a.b.c
'userInfo.name': 'tom',
'userInfo.age': 10
})
如果修改的属性较多,可以用ES6的展开运算符
。
后面的属性会覆盖前面的属性。
const userInfo = {
...this.data.userInfo,
name: 'jerry',
age: 18
}
this.setData({
userInfo
})
也可以利用Object.assign()
的方法。
// Object.assign() 将多个对象合并为一个对象
const userInfo = Object.assign(this.data.userInfo, { name: 'jerry' }, { age: 18 })
this.setData({
userInfo
})
单个属性
// 删除单个属性
delete this.data.userInfo.age
// console.log(this.data.userInfo)
this.setData({
userInfo: this.data.userInfo
})
多个属性
使用rest关键字把需要保留的参数保留下来,再把rest赋值给userInfo
// 删除多个属性 rest 剩余参数
const { age, test, ...rest } = this.data.userInfo
this.setData({
userInfo: rest
})
<view wx:for="{{ list }}" wx:key="index">{{ item }}</view>
push方法
this.data.list.push(4)
this.setData({
list: this.data.list
})
concat方法
const newList = this.data.list.concat(4)
this.setData({
list: newList
})
展开运算符
const newList = [ ...this.data.list, 4 ]
this.setData({
list: newList
})
this.setData({
// 'list[1]': 6
'list[0].name': 'jerry'
})
splice方法
this.data.list.splice(1, 1)
this.setData({
list: this.data.list
})
filter方法
const newList = this.data.list.filter(item => item !== 2)
this.setData({
list: newList
})
数据能影响页面,但页面不能影响数据。比如<input value="{{value}}"/>
数据能影响页面,页面输入能影响数据。在属性之前加入model:
前缀即可,比如`
简易双向绑定的属性值如下限制:
只能是一个单一字段的绑定,例如:错误用法:\<input model:value=“值为{value}}“/>
尚不能写 data 路径,也就是不支持数组和对象
,例如:错误用法:\<input model:value=“{ a.b}} >
调试界面 - AppData