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 错误在特定条件下的主要内容,如果未能解决你的问题,请参考以下文章