【问题标题】:How to alter drop data before drop in extjs4.1?如何在 extjs4.1 中删除之前更改删除数据?
【发布时间】:2013-05-25 19:26:24
【问题描述】:

这是对我之前的问题 (How to set an extjs grid record phantom to 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

【问题讨论】:

  • 可以在 jsfiddle.net 或 jsbin.com 上使用设置一个小演示 - 人们可以编辑代码并使用它的地方。
  • Extjs 问题有时很难引起人们的注意,至少根据我的观察,因为选择使用它的主要是关心编程的服务器端的公司。通常不听 JavaScript/Extjs 问题流的人
  • 是的,我想你是对的。 JSFiddle 可能无法很好地复制我的问题,因为我从服务器获取数据,伪造它可能会导致不同的结果。
  • 核心问题是这样的:数据被正确拖放,但目标存储没有识别新数据,因为phantom标志设置为false。我该如何改变呢?
  • 我不确定您是否应该使用phantom 或您应该做什么。也许您可以尝试改用.setDirty(),请参阅文档:docs.sencha.com/extjs/4.0.7/#!/api/…

标签: javascript extjs extjs4 extjs4.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());
    }
}

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

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

【讨论】:

  • 我将模型的copy 方法重写为以下内容:copy: function() { var me = this; var c = new me.self(me.raw, null, null, Ext.apply({}, me[me.persistenceProperty])); c.id = null; c.phantom = true; return c; },现在 store.getNewRecords() 获取了新记录,但记录最终没有被添加到存储中!?
  • @Is7aq 如果store.getNewRecords() 返回他们必须添加到该存储的记录。他们最终没有被添加到商店是什么意思?尝试将您的覆盖更改为copy: function() { var c = this.callParent(arguments); c.phantom = true; return c; }
  • 你说得对,现在一切就绪。我在商店中使用 getTotalCount() 来检查记录是否存在,这就是我没有看到修复的原因。感谢您的宝贵时间!
猜你喜欢
  • 1970-01-01
  • 2017-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-20
相关资源
最近更新 更多