商店/列表未重新加载 Sencha 1.1.1

Posted

技术标签:

【中文标题】商店/列表未重新加载 Sencha 1.1.1【英文标题】:Store/List not reloading Sencha 1.1.1 【发布时间】:2013-11-25 15:21:01 【问题描述】:

我有一个 phonegap-wrapped sencha touch (v1.1.1) 应用程序,它有几个商店和一个列表。

问题发生在您以 "User1" 身份登录,然后注销并以 "User2" 身份重新登录后。该列表不会使用商店代理获取的新帐户数据进行刷新。

我目前正在尝试在List 本身上调用.refresh(),根据文档,这也会导致商店刷新其数据(尽管无论如何我都是事先手动进行的)

var sL = Ext.getCmp('AccountsList');
sL.refresh();
sL.scroller.scrollTo(x:0,y:0);

我们还尝试.sync() 商店,但没有结果。

Ext.getStore('AccountsTransfersTo').sync();
Ext.getStore('AccountsTransfersFrom').sync();
Ext.getStore('AccountsStore').sync();

知道问题出在哪里,或者有没有人遇到过类似的情况?

【问题讨论】:

【参考方案1】:

refresh 不会重新加载商店,它只是抓取商店中的任何内容并重新渲染视图。

sync 用于在您有本地更改并将它们发布到服务器时更新商店。

你需要在store上调用load方法。

【讨论】:

这就是为什么我要求提供代码示例,您需要重新创建存储,或者完全清空它,而不使用同步调用,或者只是简单地重新创建它:) 不,您需要做的就是触发加载。它向服务器发出请求,当它返回时,它会触发一个列表监听的事件,它会自行刷新。【参考方案2】:

这听起来像是一个缓存问题。或状态问题。 一条链接: http://html5wood.com/sencha-touch-difference-between-ext-get-and-ext-getcmp/

来自页面: Sencha Touch:Ext.get() 和 Ext.getCmp() 的区别

重要提示:由于再次检索时的简单缓存,它返回相同的元素对象。这意味着它在 second 时间返回错误的元素。 Ext.fly() 可以用来避免这个问题。

希望对你有帮助 迈克。

【讨论】:

【参考方案3】:

您可以每次都加载商店

var sL = Ext.getStore('AccountsTransfersTo')
sL.load();
sL.scroller.scrollTo(x:0,y:0);

或者您可以尝试清除数据表单存储并重新加载它

var sL = Ext.getStore('AccountsTransfersTo')
sL.removeAll();
sL.load();
sL.scroller.scrollTo(x:0,y:0);

【讨论】:

请记住,我使用的是 Sencha 1.1.1 -- 没有 removeAll()load() 用于列表的方法。

以上是关于商店/列表未重新加载 Sencha 1.1.1的主要内容,如果未能解决你的问题,请参考以下文章

sencha touch load store 手动

如何在 Sencha Touch 2 中制作搜索列表?商店已经定义

使用 store sencha touch 2 将数据加载到 List

商店排序后 Sencha Touch Pull to Refresh 不起作用

Sencha Touch:如何更新数据存储以从控制器列出

sencha touch 2.2.1 检查控制器中的商店是不是为空?