一个seData的莫名其妙的问题
发布于 4 年前 作者 yutao 12041 次浏览 来自 问答

原始的 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 回复
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
        }

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

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

https://cn.vuejs.org/v2/guide/reactivity.html#检测变化的注意事项

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

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

回到顶部