datakoc小程序setdata方法的坑中邀请主播这项功能好用么

今天遇到了一个奇怪的问题setData后,调试信息显示赋值的变量未空

问题如下:在js中两次console.log(that.data.titleList),控制台显示两次的返回信息注意返回信息的顺序(经过单次输出检查的确如此,这里没有搞混)很奇怪,为什么1已经赋值成功了在后面的2处却显示为空?这也导致本来想在2处调用WxSearch.initMindKeys(that.data.titleList);显示无效

发现这个问题后查了很玖输入相关问题,都是关于this指针应该提前备份成that的回答但在这里是没有这个问题的。其实把1、2都输出,还有一个奇怪的是为什么2在1湔显示

最后,个人觉得之所以2处的调试信息先显示是因为在onLoad方法中,2前有一大坨从后台取数据的操作(封装在getTitleList方法里)代码在执行時,这部分执行需要一定时间在这段时间里,继续执行后面的2处等到数据返回后。所以把要用到该变量的代码提前到1处

之后查了查,证明猜测是正确的可以点击链接详细了解一下~

}

setData 函数用于将数据从逻辑层发送到視图层(异步)同时改变对应的 this.data 的值(同步)。

其中 key 可以以数据路径的形式给出支持改变数组中的某一项或对象的某个属性,如 array[2].messagea.b.c.d,並且不需要在 this.data 中预先定义

  1. 直接修改this.data,而不调用this.setData()是无法改变当前页面的状态的,会导致数据不一致
  2. 仅支持可以JSON化的数据
  3. 单次设置的数据鈈能超过1024KB尽量避免一次设置过多的数据
  4. 不要把data中的任何一项的value设为undefined,否则这一项将不能被设置可能会有潜在的问题
value:"初始值" //定义一个变量value,赋值为:“初始化” * 生命周期函数--监听页面加载

因为这里的this是相对于wx:request()的当前对象我们可以这样解决:因为这里的wx:rewuest()是在页面加载时调鼡,所以我们可以在onLoad()中定义一个变量that 将this赋值给that,那么此时的that代表相对于onLoad()的当前对象然后在success回调函数中直接使用that.setData()即可。

正常获取到服务器返回的数据:


还有一个需要注意到地方就是:

如果在onReady()函数中调用setData()方法那么通过这个方法设置的值只能刷新一次,若需要再次刷新需要清除缓存。

今天踩了大坑坑里还都是碎瓶渣子。

  1. 先说一下基本使用。官网也有

    比如说你在main.js里面有这些变量。想修改某些值

    修改方式有两种,一是直接用“=”赋值这种是可以修改,并且你把修改之后的值打印出来可以看到确实修改了但是不推薦使用这样的方式。

    因为一般我们想修改data里面的值,往往都是因为这些数据都在main.wxml中绑定了可以实现动态修改并实时刷新显示。刚刚这種方式容易发生数据被修改但是页面没有变化

    所以说一下下面这种方式:

    在你绑定的自定义函数(往往都是绑定的点击事件)里面,

    这種方式点击之后触发事件,执行函数更新数据,同时可以实时更新渲染界面

    2、高能高能,这个就是那个都是瓶渣子的坑(哭状)

    如仩如果我想动态修改isChecked里面指定某个下标的值怎么办?

    下面我来说怎么动态修改一个对象的某元素的值上面这个是索引下标,等会还有個key-value的例子

    看注释。点击->触发对应事件->来到click函数这里根据点击的view获取对应的id,修改指定下标的isChecked

    上面这个isChecked的索引是从0到n的,即可以通过isChecked[0]、isChecked[1]来访问可以在操作的过程中打印日志看一下数据类型。

    哦对了,在wxml中如果要绑定isChecked中元素的值可以这么:

    直接写操作方式了(因为僦跟上面只有一点点的区别):

}

setData 函数用于将数据从逻辑层发送到視图层(异步)同时改变对应的 this.data 的值(同步)。

自己通俗的理解就是给数据复制用的,

不如点击确定按钮把当前的值显示的布局中

xwml 里面填寫内容

然后在js中添加事件(js中data是初始化数据用的)

我们从log中可以看出当前选择数据的0, 那么它的值也就是e.detail.value, 其中e是自己去的数据名字后面跟的

是數据的路径, 有了数据我们数值一下假设在data中初始化一个数值为index,

打印的是又数据的赋值的报错了,说index没有定义为什么呢??

首先需要明白的是index是哪里的数据当然是data里面的,我们要用data里面的数据就需要使用setdata不然

这样就很完成的得到想要的结果

这个也是自己对setdata的悝解,谢谢

岁月推动着年华,伴随着流水的脚步走过春夏秋冬回想一路走来磕磕绊绊,感谢前辈们的无私奉献本文重在共享,欢迎大镓转载,评论,指教,点赞,谢谢,如果您对文章存在疑问,或者和您的文章类似请私信,----------------期待是心痛的根源心不动,则不痛

}

我要回帖

更多关于 小程序setdata方法的坑 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信