【问题标题】:how to recover an extjs4 store?如何恢复 extjs4 商店?
【发布时间】:2011-09-11 05:27:20
【问题描述】:

型号:

Ext.define('Voting', {
    extend: 'Ext.data.Model',
    hasMany: [
        {model: 'VotingQuestion', name: 'questions'}
    ]
}

和:

grid.bindStore(voting.questions())

然后使用 RowEditing 来添加/编辑/删除/重新排列网格

在此之后,如果我单击取消按钮,是否有任何简单的方法可以将“问题”恢复到初始状态(从服务器重新加载存储除外)?

谢谢

【问题讨论】:

    标签: extjs extjs4


    【解决方案1】:

    这取决于您如何实现行编辑功能。如果您已使其实时保持更改,恐怕您将不得不向服务器发出调用以使其恢复到初始状态。

    如果您在客户端保存少量事务的状态,那么您可以拥有类似 UnDo/ReDo 工具,用户可以在不调用服务器的情况下撤消或重做最后的事务。这基本上是一个设计决定,无论您是希望每次编辑都进行网络聊天,还是希望拥有由多个事务组成的粗粒度数据持久性。

    如果应用程序是为高级并发访问而设计的,那么您必须小心并注意是否必须构建额外的机制来处理数据完整性。

    你可以看看extjs-timeline的目标状态

    Timeline 项目是 ExtJS 接口库的扩展。 它的目标很简单:

    Provide a framework for undo/redo of user events.
    Be generic enough for widespread basic use.
    Be extensible enough for easy customization.
    Be free to everyone, for any purpose, personal or commercial.
    

    编辑:Check this example, 这也有持久化数据的延迟机制。

    【讨论】:

    • extjs-timeline 好像是基于extjs3的。而且store的变化是本地的,store有没有reject()方法?
    • 不明白...你能详细说明你说的话吗...我已经更新了答案,再添加一个链接检查是否有帮助
    • 抱歉我的快递很差。我的意思是 Store 有没有 ext 内置方法,像 Model.reject() 那样做工作
    【解决方案2】:

    也许不是你想要的,但你试过了吗

     grid.getStore().each(function(record){
          record.reject();
     })
    

    【讨论】:

    • 我知道拒绝。但是我想知道store.each是否可以得到删除的记录?
    • Store.each 获取整个记录,其中包含有关它是否已被修改、现在是什么等的元数据。拒绝它们可能是恢复商店的“简单方法”到它的初始状态。如果不是这样,我对你想要什么感到困惑。
    【解决方案3】:
    猜你喜欢
    • 2013-01-22
    • 2014-04-16
    • 2013-04-20
    • 1970-01-01
    • 2011-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-18
    相关资源
    最近更新 更多