checkbox 数据绑定 问题
发布于 5 年前 作者 jiangyang 17796 次浏览 来自 问答

<checkbox-group bindchange=“checkboxChange”>

<view class=‘alarm-item’ wx:for="{{alarms}}">

<checkbox class=‘check’ checked="{{selectedAlarms}}.indexOf({{item.Id}})>0" value=’{{item.Id}}’></checkbox>

<view class=‘alarm-item-data’ data-id=’{{item.Id}}’ bindtap=‘getAlarmDetail’>

</view>

</view>

</checkbox-group>

有一个全选按钮  点击反选 可以把selectedAlarms 置空 但是checkbox为什么一直是选中状态?

10 回复

selectedAlarms 这个存不进去,在AppData里还是空的

我改成>=0也还是一样啊

<checkbox-group bindchange=“checkboxChange”>

<view class=‘alarm-item’ wx:for="{{alarms}}">

<checkbox class=‘check’ checked="{{selectedAlarms.indexOf(item.Id)>=0}}" value=’{{item.Id}}’></checkbox>

<view class=‘alarm-item-data’ data-id=’{{item.Id}}’ bindtap=‘getAlarmDetail’></view>

</view>

</checkbox-group>

<checkbox-group bindchange=“checkAll”>

<checkbox value=‘checkedAll’ class=‘check’>

<label>全选</label>

<view>{{selectedAlarms.length}}</view>

</checkbox>

</checkbox-group>

checkAll: function (e) {

if (e.detail.value[0]){

var newselected=[];

this.data.alarms.forEach(function (val){

newselected.push(val.Id);

});

this.setData({

selectedAlarms: newselected,

});

}else

{

this.setData({

selectedAlarms: [],

});

}

},

checkboxChange: function (e) {

this.setData({

selectedAlarms: e.detail.value,

});

},

data: {

alarms: [],

selectedAlarms: [],

},

点可以解析啊,但解析的是属性

indexOf是方法,是不能在模板里解析的,

已选的数量你另外定义一个变量不行吗?非得纠结这个。

你帖代码出来看看

var newselected = [];

应写作

var newselected = {};

{{selectedAlarms.length}}

变成对象了 这个就获取不到了,


还有就是.length原来是可以的,说明"."是可以解析的

好吧,非常感谢

测试了一下。

我猜测是模板引擎不支持这种语法的问题

模板引擎把 “.” 后面的当作属性去解析,发现没这个属性,一直返回undefined

推荐你用对象保存已选数据的方法

<checkbox class='check' checked="{{selectedAlarms[item.Id]}}" value='{{item.Id}}'></checkbox>
 
if (e.detail.value[0]) {
      var newselected = [];
      this.data.alarms.forEach(function (val) {
        newselected[val.Id]=true;
      });
      this.setData({
        selectedAlarms: newselected,
      });
    } else {
      this.setData({
        selectedAlarms: {},
      });
    }

部分代码。其它你按这个逻辑完善

那你要检查代码的逻辑问题了

比如这个indexOf,匹配到的返回结果是 0~,匹配不到返回的是-1

你这里判断逻辑就有问题

回到顶部