【问题标题】:Ext JS 4.0.7 Store with LocalStorage Proxy带有 LocalStorage 代理的 Ext JS 4.0.7 存储
【发布时间】:2013-08-02 09:33:46
【问题描述】:

我有一个 Store 和一个 LocalStorage 代理。商店连接到网格面板。在网格面板的工具栏中有一个“全部删除”按钮。此按钮连接到控制器操作,如下所示:

var store = Ext.getStore("Conflicts");

    console.log(store);
    store.load({
        callback: function(){
            console.log(store);
                store.removeAll();
                store.sync();
            console.log(store);
        }
    });

    console.log(store);

如您所见,我添加了一些 console.log() 来查看 Store 中的内容。我的问题是,从一开始(第一个 console.log())商店中就没有数据。但无论如何,在我的网格中,我看到大约 170 个项目,它们在商店中,单击删除按钮后它们从网格中消失,但如果我刷新页面,它们又会在那里。 我还将自动加载和自动同步属性设置为 true。 console.log() 的输出始终保持不变。我尝试了使用和不使用 store.load(),但我要清空的商店中总是没有数据。

感谢您的帮助。

【问题讨论】:

  • 我已经阅读了几次这个问题,但我仍然不确定您的问题是什么?提供的代码显示在加载时从存储中删除所有记录...您到底想实现什么?
  • 我只是想清除整个商店。我添加了加载功能以确保所有我想删除的记录都已加载,但仍然遇到了麻烦。 Christophs 的回答在某种程度上帮助了我,但我仍然遇到了一些麻烦,正如您在答案下方的评论中看到的那样。

标签: extjs extjs4


【解决方案1】:

众所周知,store.removeAll() 不会实际删除记录,而只是清除存储。小心,这种行为被 later versions 改变了

你可以改用:

var store = Ext.getStore("Conflicts");

console.log(store);
store.load({
    callback: function(){
        console.log(store);
        store.remove(store.getRange());
        store.sync();
        console.log(store);
    }
});

console.log(store);

【讨论】:

  • 这适用于从商店中删除所有 Objetcts,这很好。但是,如果我重新加载页面,它就不再起作用了。我在萤火虫“TypeError:id is undefined if (id.isModel) {”中得到错误我注意到通过查看萤火虫的记录,internalId 在页面重新加载之前像“ext-record-230”和重新加载之后只是“230”。有什么想法吗?
  • 如果我在 slite 管理器中打开 webappsstore2 表可能也很有趣,我看到 extjs 使用“undefined-(number)”作为键,也许我已经做错了,以便 extjs 保存为未定义?
  • 查看异常的堆栈跟踪。我认为您正在对已删除的记录进行一些无效操作。
猜你喜欢
  • 2015-07-24
  • 2012-07-12
  • 2011-11-18
  • 1970-01-01
  • 2015-04-16
  • 1970-01-01
  • 1970-01-01
  • 2012-02-11
  • 1970-01-01
相关资源
最近更新 更多