收藏
回答

一个seData的莫名其妙的问题

框架类型 问题类型 终端类型 AppID 基础库版本
小程序 Bug 客户端 wxe5ff3a2db43a3119 2.2.4

原始的 orderlists.data
我通过查询数据库拼接,做成了 orderLists  



可是再次赋值的时候,始终还是原来的,到底是什么情况???


var orderLists = orderlists.data
 
console.log(orderLists)//看这里 赋值成功了
 
console.log(this.data.lists)//到这里还能确认 lists 是空的
 
console.log(orderlists.data)//原始数据也修改了 
 
this.setData({
 
lists: orderLists
 
})
 
console.log(this.data.lists)//特么的为毛这里就没有???


从上到下 对应的输出




回答关注问题邀请回答
收藏

4 个回答

  • StoneTheRocker
    StoneTheRocker
    2018-11-20

    var orderLists = orderlists.data 这个变量换成 let orderLists = orderlists.data 试试。

    2018-11-20
    有用
    回复 1
    • 那只知更鸟
      那只知更鸟
      2018-11-20

      对对对对 我试试我试试

      2018-11-20
      回复
  • z
    z
    2018-11-18

    我不是前端,不是很清楚,感觉跟 vue 这个机制有点像,你可以试试


    https://cn.vuejs.org/v2/guide/reactivity.html#%E6%A3%80%E6%B5%8B%E5%8F%98%E5%8C%96%E7%9A%84%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9

    2018-11-18
    有用
    回复 3
    • 那只知更鸟
      那只知更鸟
      2018-11-18

      是的 机制很像…… 纠结的其实是 Promise.then 这种方法是无效的。。。换个 setTimeout(fn, 0) 就可以。不过显然,setTimeout(fn, 0)这种有点不好用吧…… 然后我尝试了async/await 这种,依旧无效。setDate的优先级似乎太高了 哈哈。 但是仅限于 云开发的函数们哦 。。。普通的request尚未发现有问题。

      2018-11-18
      回复
    • z
      z
      2018-11-18

      emm...

      我还没用过云开发的函数。

      感觉自己就本地都玩不转了,一次性 setData 两个值,只成功了一个...

      2018-11-18
      回复
    • 那只知更鸟
      那只知更鸟
      2018-11-18回复z

      我也是第一次用哈哈 反正 用的很恼火 不过 感觉  云函数 以后是趋势的嘛 就忍了  阿里的无服务器函数 一个意思的吧


      2018-11-18
      回复
  • 那只知更鸟
    那只知更鸟
    2018-11-17
    for (var i = 0; i < orderLists.length; i++) {
              //反过来想,把每一条数据插入到orderlist中不就好了
              let tmplist = orderLists[i]
               
              db.collection('goodsLists')
                .doc(orderLists[i].goods)
                .field({
                  brief: true,
                  hiddeninfo: true
                })
                .get()
                .then(res => {
                  tmplist.brief = res.data.brief
                  tmplist.hiddeninfo = res.data.hiddeninfo
              })
              .catch(console.error)
              orderLists[i] = tmplist
            }

    怎么拼接的 不影响吧?  你看上面打印的数据,同一个值,直接打印是拼接好的,赋值后打印就是没拼接的 ……

    2018-11-17
    有用
    回复 2
    • 那只知更鸟
      那只知更鸟
      2018-11-17

      然后我,再尝试了 各种遍历方法,,最终效果都是这样…… 不懂发生了什么……

      2018-11-17
      回复
    • 那只知更鸟
      那只知更鸟
      2018-11-17回复那只知更鸟

      最终 加了个 800ms的延迟…… 来解决…… 问题是,如果网络很差,800延迟也不够啊……

      2018-11-17
      回复
  • 言水心
    言水心
    2018-11-17

    数据拼接的那一块没有看到啊喂

    2018-11-17
    有用
    回复
登录 后发表内容