收藏
回答

小程序能否主动触发事件

我现在要做一个批量删除功能,点击一个【全选】的checkbox,就能全选列表中所有的checkbox,

我使用的是在data里放selectAll:false的变量,全部的checkbox的checked="{{selectAll}}",

然后改变selectAll:true就可以全部显示选中了,但是这样不会触发bindchange,没办法获取所有的id号,请问有办法获取所有的id吗?


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

4 个回答

  • 黄皓
    黄皓
    2019-07-26

    自己搞出来了一个办法,用createSelectorQuery,效率也还不错,直接省掉了bindchange事件,从代码简洁度来讲感觉好一些。

    100条,耗时29毫秒,感觉还可以。

    var idlist = [];
    var dt = new Date();
    var ss = wx.createSelectorQuery();
    var res = ss.selectAll(".selectCheckbox");
    res.fields({
        properties: ["checked", 'value']
    }, function(resx) {
        $.log(resx.length)
        for (var x = 0; x < resx.length; x++) {
            var tjson = resx[x];
            $.log(tjson);
            if (tjson.checked === true) {
                idlist.push(tjson.value);
            }
        }
    }).exec(function() {
        $.log(idlist);
        console.log("耗时=>" + (new Date() - dt));
    });
    2019-07-26
    有用
    回复
  • 原点的原点
    原点的原点
    2019-07-26

    自己写个假的选框

    2019-07-26
    有用
    回复 1
    • 黄皓
      黄皓
      2019-07-26

      好惨  ╯﹏╰  习惯了js的极度自由,改成每次都要遍历全部数据感觉超级浪费。遍历一次数据,就等于要全部都重新渲染一次,这样不是太浪费资源了吗?难度没有更好一些的办法。。。

      2019-07-26
      回复
  • waterfall
    waterfall
    2019-07-26

    没有ID那这些161、162哪来的。。。

    2019-07-26
    有用
    回复 1
    • 黄皓
      黄皓
      2019-07-26
      161、162这些是为了方便调试显示出来的
      2019-07-26
      回复
  • 拾忆
    拾忆
    2019-07-26

    为什么不在每个数据单独设置一个复选框状态属性呢?

    全选的时候遍历下数据,把复选框状态变更下就行了,提交数据的时候再遍历下数据判断哪些是选中的。

    2019-07-26
    有用
    回复 6
    • 黄皓
      黄皓
      2019-07-26

      只能遍历这一种办法吗?,而且每一列还要新增一个是否选中的状态属性,列表长的时候感觉特别耗费资源😓

      2019-07-26
      回复
    • 拾忆
      拾忆
      2019-07-26
      又不是几千几万条,小程序本身前台能显示的元素也是有上限的,以手机的运算能力来说遍历没什么太大压力。
      2019-07-26
      回复
    • 刘汝佳
      刘汝佳
      2019-07-26
      你可以添加一个参数 a 好比你原来的复选框状态是b1,b2,。。。。 现在的状态是a || b,a为true的时候 状态就是true了,
      2019-07-26
      回复
    • 刘汝佳
      刘汝佳
      2019-07-26回复黄皓

      <checkbox-group bindchange="checkboxChange">

      <label class="checkbox" wx:for="{{items}}">

      <checkbox value="{{item.name}}" checked="{{item.checked||a}}"/>{{item.value}}

      </label>

      </checkbox-group>


      2019-07-26
      回复
    • 黄皓
      黄皓
      2019-07-26回复刘汝佳

      好的,我试试,可能是之前操作dom习惯了,没改过来,因为之前datagrid一次渲染就是500-1000条数据,手机上好像也不可能这么搞,还是要靠搜索。

      2019-07-26
      回复
    查看更多(1)
登录 后发表内容