layui单行数据更改之后,表格缓存的数据没有更改

提问 未结 2 161
初心Fly
初心Fly 2019-5-16
悬赏:20飞吻
版本: v2.4.5 浏览器:Google Chrome 74.0.3729.131(正式版本) (64 位)


// 表示复选框选中状态的变量,0或1,如果没点击复选框,得到的是undefined,作用是为行点击事件和复选框事件传递数据
var state

// 监听行点击事件在复选框之后后执行
table.on('row(list)', function (obj) {

if (state) {
// 把复选框赋值的状态0或1传给对象中的状态
obj.data.state = state
} else {
// 如果点击的不是复选框,state为undefined,应该让它为原来的数值
obj.data.state = obj.data.state
}

// 将改变的属性更新到对象数据中

// obj.update(obj.data)

obj.update(obj.field)

console.log(obj.data);
});

// 监听复选框的改变事件,在行点击事件前先执行
form.on('checkbox(checkbox)', function (obj) {
// 如果复选框为选中状态,状态就为1,就是不启用
state = obj.elem.checked ? '1' : '0'
});
如果使用 被注释的 obj.update(obj.data),点击后表格数据能够得到更新,但是复选框会消失,但复选框的位置仍能点击,触发复选框事件






回帖
  • 红烧鱼i
    2019-5-16
    obj是原始data中根据下标取出来的,不管你改多少次,都是不变
    定义一个变量,把data赋值给它,在这个变量上改
    0 回复
  • 初心Fly
    2019-5-16
    @红烧鱼i
                            var oobj = obj
    oobj.data.state = state

    // 将改变的属性更新到对象数据中

    obj.update(oobj)

    // obj.update(obj.field)
    这样吗,我想更改obj是因为obj在表格数据的缓存中
    如果obj.update(obj.data),这样可以更新到表格数据的缓存中
    table.cache中的数据才会被更新为修改后的
    但是视图中的复选框没了,重新打开就有了
    0 回复