小程序setData()使用和注意事项
栏目: JavaScript · 发布时间: 7年前
内容简介:如果在onReady()函数中调用setData()方法,那么通过这个方法设置的值只能刷新一次,若需要再次刷新,需要清除缓存。结束~
注意:
- 直接修改this.data,而不调用this.setData(),是无法改变当前页面的状态的,会导致数据不一致
- 仅支持可以JSON化的数据
- 单次设置的数据不能超过1024KB,尽量避免一次设置过多的数据
- 不要把data中的任何一项的value设为undefined,否则这一项将不能被设置,可能会有潜在的问题
代码示例:
Page({
/**
* 页面的初始数据
*/
data: {
value:"初始值" //定义一个变量value,赋值为:“初始化”
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
}
})复制代码
直接在wx:request()的success回调函数中使用this.setData()会报这样一个错误:
因为这里的this是相对于wx:request()的当前对象
解决:因为这里的wx:rewuest()是在页面加载时调用,所以我们可以在onLoad()中定义一个变量that ,将this赋值给that,那么此时的that代表相对于onLoad()的当前对象,然后在success回调函数中直接使用that.setData()即可。
如果是获取实例方式:
var that; 全局定义that变量
var option = { data: { }};
var requestCallback =function (err, data) { if (err) { ************************ } else {
that.setData({ cosImage: data.headers.Location })
}};
option.simpleUpload = function () { that = this; //这里定义 this
// 选择文件 wx.chooseImage({ count: 1, // 默认9 success: function (res) { ********************************** }, requestCallback); } })};
//获取应用实例Page(option);
复制代码
还有一个需要注意到地方就是:
如果在onReady()函数中调用setData()方法,那么通过这个方法设置的值只能刷新一次,若需要再次刷新,需要清除缓存。
data: {
isChecked: [true, true, true, true, true, true, true, true, true, true, true]
}
复制代码
如上,如果我想动态修改isChecked里面指定某个下标的值怎么办?
下面我来说怎么动态修改一个对象的某元素的值。上面这个是索引下标,等会还有个key-value的例子。
代码:
click: function (e) {
var id = e.target.id//根据点击不同的view获取对应的id值
var str = "isChecked[" + id + "]"//重点在这里,组合出一个字符串
this.setData({
[str]: false//用中括号把str括起来即可
})
}
复制代码
看注释。点击->触发对应事件->来到click函数这里,根据点击的view获取对应的id,修改指定下标的isChecked。
上面这个isChecked的索引是从0到n的,即可以通过isChecked[0]、isChecked[1]来访问。可以在操作的过程中打印日志看一下数据类型。
哦,对了,在wxml中如果要绑定isChecked中元素的值,可以这么:
<view class="{{isChecked[2]?'main_view':'main_view_clicked'}}" bindtap='click' bindlongpress='cancelclick' id='2' bindtap='click'></view>
不要在意那个三目运算,反正类似于js中访问方式,也是isChecked[index]。同理,下面的key-value类型的就可以通过isChecked[index].key来绑定数据了。
下面是key-value类型的:
data: {
isChecked: [
{
key: true
},
{
key: true
},
{
key: true
}
]
}
复制代码
直接写操作方式了(因为就跟上面只有一点点的区别):
var str = "isChecked[" + id + "].key"
this.setData({
[str]: false
})复制代码
结束~
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Coding the Matrix
Philip N. Klein / Newtonian Press / 2013-7-26 / $35.00
An engaging introduction to vectors and matrices and the algorithms that operate on them, intended for the student who knows how to program. Mathematical concepts and computational problems are motiva......一起来看看 《Coding the Matrix》 这本书的介绍吧!