小程序能否主动触发事件
发布于 5 年前 作者 xiuying56 2649 次浏览 来自 官方Issues

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

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

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

5 回复

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

自己搞出来了一个办法,用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));
});

自己写个假的选框

你一页显示显示几条?不分页?直接遍历获取就行了

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

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

回到顶部