【问题标题】:How do I update a single instance in a Store?如何更新商店中的单个实例?
【发布时间】:2012-09-24 20:51:09
【问题描述】:

我有一个用于支持列表的商店。当我点击一个列表项时,我会显示一个“详细信息”面板。详细信息面板上的按钮之一启动 POST 请求以启动服务器端操作。这会将服务器端的状态从“空闲”更改为“进行中”。为了更新详细信息面板上的 UI,然后我通过调用 Model 类的 load() 来加载此实例的最新数据,例如

MyApp.model.Server.load(serverId, 
    success: function(record, operation) {
        // code that updates the current view
    }
});

但是,这似乎并没有更新底层 Store 中的实例。所以当我回到列表时,我点击的服务器有陈旧的数据(仍然说“空闲”)。

有没有一种方法可以获取更新后的服务器实例并仅更新商店中的该记录?我不想仅仅为了更新一条记录的 UI 而重新加载我的整个商店。

我尝试更新商店中的实例,但无济于事:

Ext.getStore('Server').getById(serverId).data = record.data;

我在这里遗漏了什么吗?还是我真的必须重新加载整个商店才能获得一条记录的更新状态?

【问题讨论】:

    标签: html model sencha-touch-2 store


    【解决方案1】:

    不,您不需要重新加载所有商店并手动设置好更新记录数据。

    正确:

    var record = Ext.getStore('Server').first();

    record.set(form.getData());

    record.save();

    【讨论】:

    • 这不是我想要的——这将触发对服务器的保存操作。但是我没有保存表单中的任何本地更改,我想用远程对象的新副本更新我在存储中的对象的本地副本。不过还是谢谢。
    • 您可以在不重新加载存储的情况下更新内存中的记录,这样:var recordStr = store.first() recordStr.set(record.getData()) 此代码将更新记录。您需要使用set() 方法
    猜你喜欢
    • 1970-01-01
    • 2013-04-20
    • 2016-02-06
    • 2015-05-29
    • 2014-12-23
    • 2018-06-29
    • 1970-01-01
    • 2019-03-28
    • 2014-03-11
    相关资源
    最近更新 更多