【问题标题】:Store/List not reloading Sencha 1.1.1商店/列表未重新加载 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();

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

【问题讨论】:

    标签: javascript extjs sencha-touch


    【解决方案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() 用于列表的方法。
      猜你喜欢
      • 1970-01-01
      • 2011-09-01
      • 2012-06-17
      • 1970-01-01
      • 2014-02-21
      • 1970-01-01
      • 1970-01-01
      • 2012-02-08
      • 2015-11-17
      相关资源
      最近更新 更多