收藏
回答

actionsheet不通过索引如何区别选中的项

假如点击文章内容弹窗有三个选项 var itemList = ['回复','删除','举报']

自己的文章能删除,不能举报:var itemList = ['回复','删除']

他人的文章能举报,不能删除:var itemList = ['回复','举报']

现在就遇到一个问题了,我通过索引,到底是点击了 删除  还是  举报操作,无法区分了。



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

2 个回答

  • Smilence
    Smilence
    2018-06-22

    emmmmm...

    可以自己做一个actionsheet,很简单的。

    component只承载自己的功能,一切的处理应该在component的parent中处理。

    再加一个css transition动画,so easy


    使用:

    <actionsheet active="{{showmenu}}">
      <button data-type="reply">回复</button>
      <button data-type="delete">删除</button>
    </actionsheet>

    WXML:

    <view class="wrapper{{ active ? ' active' : '' }}"><slot></slot></view>
    <view class="overlay{{ active ? ' active' : '' }}" catch:tap="onTapOverlay"></view>

    JS:

    Component({
      properties: {
        active: {
          type: Boolean,
          value: false
        }
      },
     
      methods: {
        onTapOverlay(){
          this.triggerEvent('hide')
        }
      }
    })


    2018-06-22
    有用 1
    回复 1
    • 小夏ᯤ⁵ᴳ
      小夏ᯤ⁵ᴳ
      2018-06-22

      这个我自己也有自定义,但是就想问下自带的如何解决

      2018-06-22
      回复
  • 冬雪飘零bin
    冬雪飘零bin
    2018-06-22

    首先,你应当要用逻辑去区分的索引的


    点击触发后,先判断是文章是否是自己的,

    if(index == 2){

        if(文章 == 自己的){

                 删除逻辑 

        }else{

                举报逻辑

        }

    }

    2018-06-22
    有用 1
    回复 2
    • 小夏ᯤ⁵ᴳ
      小夏ᯤ⁵ᴳ
      2018-06-22

      我想问下,wx.actionsheet  这个你要调用几次?  删除逻辑调用一次wx.actionsheet,举报逻辑调用一次wx.actionsheet ????

      2018-06-22
      回复
    • 冬雪飘零bin
      冬雪飘零bin
      2018-06-22回复小夏ᯤ⁵ᴳ

      不知道是我理解错了还是你理解错了,我想我下面的代码应该能解决你说的问题

      就是调用一次,显示多个item而已,然后再根据触发的索引去执行该执行的逻辑


      wx.showActionSheet({  itemList: ['回复', '删除'] or ['回复','举报'],     // 注意:这里也要根据用户判断显示的按钮  success: function(res) {

          switch(res.tapIndex){

              case 0:

                  // 这里回复等于0,都是做回复操作,无需逻辑判断

                  break;

              case 1:

                  // 这里两种可能,需要逻辑判断

                  if(文章 == 自己的){

                      // 执行删除逻辑

                  }else{

                      // 执行举报逻辑

                  }

                  break;

          }  },  fail: function(res) {

          console.log(res.errMsg)

        }
      })


      2018-06-22
      回复
登录 后发表内容