0

这是对我之前的问题(如何将 extjs 网格记录幻象设置为 true)的改写,由于某种原因没有引起任何关注。

如何更改在“beforedrop”函数上触发的函数内删除的数据?这是 ExtJS 中的错误吗?我已经用尽了所有解决方案。

例子:

listeners: {
  beforedrop: function(node, data) {
      console.log('before:'+data.records[0].phantom);
      data.records[0].phantom = true;
      console.log('set:'+data.records[0].phantom);
  },
  drop: function(node, data) {
      console.log('confirm:'+data.records[0].phantom);
  }

印刷:

before:false
set:true
confirm:false 

代替

before:false
set:true
confirm:true
4

1 回答 1

1

从handleNodeDrop中查看这段代码,它在beforeDrop事件触发之后但在事件之前调用drop

if (data.copy) {
    records = data.records;
    data.records = [];
    for (i = 0, len = records.length; i < len; i++) {
        data.records.push(records[i].copy());
    }
}

copyon的实现Model不会复制phantom记录上的属性。如果记录有一个 id 并且它被复制,它将phantom在副本中设置为 false。

data.copy设置为真?如果是这样,几乎可以肯定这就是正在发生的事情。解决此问题的一种方法是覆盖模型上的复制方法以复制幻象状态。另一种方法是在复制记录后覆盖handleNodeDrop 以复制幻象状态。

于 2013-05-25T11:26:24.740 回答