Extjs 同步商店给了我一个 url is undefined 错误在特定条件下

Posted

技术标签:

【中文标题】Extjs 同步商店给了我一个 url is undefined 错误在特定条件下【英文标题】:Extjs syncing a store gives me a url is undefined error under specific conditions 【发布时间】:2011-07-08 18:10:05 【问题描述】:

我有 4 个启用了拖放插件的网格。它们的初始网格取决于数据库中名为 state_id 的值。

当我将所选行放入新网格时,我会更新 state_id 值,然后告诉它与数据库同步并更新相关项目的值。

这在大多数情况下都可以正常工作。当发生以下情况时,我得到这个 URL 是未定义的错误

    用户单击从网格中拖动行 A 1 到网格 2 用户从 网格 2 到网格 1 错误!网址 未定义。

仅当添加到网格的第一个项目最初来自同一网格时,才会发生此错误。

    用户单击将 A 行从网格 1 拖到网格 2 用户单击将 B 行从网格 2 拖到网格 1 用户单击将 A 行从网格 2 拖到网格 1 按预期工作!

在我的控制器中放置事件处理程序:

dropit: function (node, data, dropRec, dropPosition) 
    if (node.dragData.records[0].store.$className == "AM.store.BacklogCards")
    
        data.records[0].set('state_id', 1);
        this.getBacklogCardsStore().sync();
    
    else if (node.dragData.records[0].store.$className == "AM.store.InprogressCards")
    
        data.records[0].set('state_id', 2);
        this.getInprogressCardsStore().sync();
    
    else if (node.dragData.records[0].store.$className == "AM.store.ReviewCards")
    
        data.records[0].set('state_id', 3);
        this.getReviewCardsStore().sync();
    
    else
    
        data.records[0].set('state_id', 4);
        this.getDoneCardsStore().sync();
    
    //node.dragData.records[0].store.sync();
,

关于导致此问题的原因以及如何解决此问题的任何想法?

谢谢

【问题讨论】:

在您的第一个测试用例中,如果“用户将 A 行从网格 2 拖到网格 3”,事情是否按预期工作? 是的,它工作正常。问题似乎在于它在将其他任何东西放入同一(原始)位置之前返回其“原始”位置。 如果错误是“url undefined”,那么问题似乎不存在,而是在您的实际商店定义中。请注意,有时由于在类定义中使用了 ID,可能会发生此类错误,因为 ID 必须是唯一的,因此在实例化对象时会出现奇怪的故障。 你在哪一点发布?最新的? 【参考方案1】:

我可以建议您使用一个商店而不是三个,并简单地添加三个相同的网格,它们都使用同一个商店,但在 state= 上进行过滤?

这样您就可以简单地更新放置状态,刷新两个相关的网格并同步一个商店。

【讨论】:

【参考方案2】:

看起来每当你的 dropit 函数被调用时,你只是在同步一个商店。您不应该同步该项目来自的商店和它被丢弃的商店吗?在我看来,幻象删除记录仍会在原始存储中徘徊,当您将该记录拖回时,这将导致两条记录存在,因为从存储从未同步以删除该记录。

【讨论】:

以上是关于Extjs 同步商店给了我一个 url is undefined 错误在特定条件下的主要内容,如果未能解决你的问题,请参考以下文章

ExtJS - 与重复 ID 同步

更改商店的 URL 时,ExtJS 5 应用程序 + Django 休息框架 CORS 错误

如何添加同步回调以存储在 ExtJS 中

Extjs 4.1 - 如何将数据从商店加载到另一个商店

如何在extjs中动态设置url和root

Google Play 商店内部测试链接不起作用