收藏
回答

如何利用云开发将折叠面板和单元格组合起来?把数据都写活

我想做一个菜单,菜单有不同的菜系,展开菜系有对应的菜品。

再点击菜品可以跳转页面

我想用云开发实现实时更新数据,不想写死

想实现的效果图

我在数据库录了对应的数据

第一个集合classType用来写菜系

第二个集合foods用来写具体的菜品

wxml 代码

我定义了两个wx:for 感觉问题出在这,但不知道怎么修改

<van-collapse value="{{ activeName }}" bind:change="onChange" accordion
  wx:for="{{classType}}" wx:key="_id"  >
  <van-collapse-item title="{{item.name}}" name="1" >
    <van-cell   wx:for="{{foods}}" wx:key="_id"
  is-link
  icon="{{item.icon}}"
  title="{{item.name}}"
  link-type="navigateTo"
  url="{{item.url}}"
/>
  </van-collapse-item>
</van-collapse>


JS

//  菜系
   db.collection("classType").get().then(res=>{
     this.setData({
       classType:res.data
     })
   })
  // 菜品
   db.collection("foods").get().then(res=>{
        this.setData({
          foods:res.data
     })
   })

效果

我只点了一个东北菜,但下面所有的菜系都全部打开了,并且所有菜品都会出现

东北菜里面多了“一品豆腐和油焖大虾”,下面的鲁菜同理

本人小白,求大神指点。我想把菜单的数据写活,但不知道该怎么定义循环数组。

望大神指点迷津,小弟感激不尽!!!

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

3 个回答

  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    2020-05-20

    代码片段

    https://developers.weixin.qq.com/s/WBrSgumw7GhX

    若认为该回答有用,给回答者点个[ 有用 ],让答案帮助更多的人

    2020-05-20
    有用 1
    回复 22
    • xY
      xY
      2020-05-20
      大神,js的代码我看不懂啊!!!
      onChange(e) 和 idx =e.xxx 该如何修改?
      我就是单纯的想把折叠面板和单元格写到一起,并且能用云开发实时修改。望大神救小弟于水火,感激不尽!!!
      2020-05-20
      回复
    • o0o有脾气的酸奶
      o0o有脾气的酸奶
      2020-05-20回复xY
      vant 我没用过
      那你复制我的wxml,然后在onChange(e)里打印e,看看是什么内容
      2020-05-20
      回复
    • xY
      xY
      2020-05-20
      没有任何的报错,有菜系,但点击菜系不会弹出对应的菜品。试了下,在classType集合里添加新的name,可以实时更新!
      2020-05-20
      回复
    • o0o有脾气的酸奶
      o0o有脾气的酸奶
      2020-05-20回复xY
      没说叫你看报错,叫你打印e看是什么内容
      2020-05-20
      回复
    • xY
      xY
      2020-05-20
      点击菜系后
      2020-05-20
      回复
    查看更多(17)
  • 老张
    老张
    2020-05-20

    不需要有第一个集合。

    2020-05-20
    有用
    回复 3
    • xY
      xY
      2020-05-20
      那该如何将菜品放入对应的菜系内呢?我编译之后,所有name都跑到所有菜系下了,没有对号入座!!!望大神指点迷津
      2020-05-20
      回复
    • 老张
      老张
      2020-05-20回复xY
      aggregate.group了解一下。
      2020-05-20
      回复
    • xY
      xY
      2020-05-20回复老张
      谢谢大神指路,我去了解了解!
      2020-05-20
      回复
  • Admin ²º²⁴
    Admin ²º²⁴
    2020-05-20
    //  菜系
       db.collection("classType").get().then(res=>{
         for (let i = 0 ;i<res.data.list;i++){
          // XX classType下的菜品
          const nowClassType = res.data.list[i].name;
           await db.collection( "foods").where({classType:nowClassType}).get().then(resFoods=>    {
               res.data.foods = resFoods.list;
              });
         }
         this.setData({
           classType:res.data
         })
       })
    
       })
    
    <van-collapse value="{{ activeName }}" bind:change="onChange" accordion
      wx:for="{{classType}}" wx:key="_id"  >
      <van-collapse-item title="{{item.name}}" name="1" >
        <van-cell   wx:for="{{item.foods}}" wx:key="_id" wx:item="itemfood"
      is-link
      icon="{{itemfood.icon}}"
      title="{{itemfood.name}}"
      link-type="navigateTo"
      url="{{itemfood.url}}"
    />
      </van-collapse-item>
    </van-collapse>
    
    2020-05-20
    有用
    回复 3
    • Admin ²º²⁴
      Admin ²º²⁴
      2020-05-20
      代码可能有错,演示的是基本逻辑
      2020-05-20
      回复
    • xY
      xY
      2020-05-20
      谢谢大神,第四行 await报错怎么整啊!!!
      2020-05-20
      回复
    • xY
      xY
      2020-05-22回复Admin ²º²⁴
      大神能再帮我看看嘛,这个await 为啥报错!整了好久弄不明白
      2020-05-22
      回复
登录 后发表内容
问题标签