Sencha Touch:在代理URL更改后重新加载NestedList和TreeStore

时间:2012-02-06 13:12:59

标签: sencha-touch

我有和使用NestedList和TreeStore的应用程序。 TreeStore使用AJAX类型代理和XML阅读器。现在,我已经实现了“设置”页面,您可以在其中更改用作数据源的URL。应用程序需要在更改后“重新加载”。因此,我更改了代理网址:

App.tree_store.proxy.url = new_url;

然后我想加载一个新数据:

App.tree_store.load();

当我将NestedList切换到root卡时,它将包含来自先前配置和当前配置的混合数据:

App.views.hdTreeView.setActiveItem(0);

问题:在加载全新数据(相同的数据模型)之前,我应该如何“清除/重置”NestedList?我是否还必须清除TreeStore / SubStores和Proxy,如果是,如何?也许使用destroy()方法并重新创建新组件?

如果我使用removeAll()删除所有列表而不是重新加载商店,则不会创建新列表。

谢谢!

2 个答案:

答案 0 :(得分:1)

 showDetail: function(list, index , element , record) {
            //Take your store
            var store = Ext.getStore('yourstore');

            //Apply the params
            Ext.apply(store.getProxy()._extraParams, {
                id : record.data.id
            });

            //Reload your store
            store.load();
}

将此代码放在控制器

只需更改extraParams即可获取新数据。

商店中的

不要输入exterparam

所以你的cab只使用一个url,但chnage只是param for fetch data。

答案 1 :(得分:0)

首先使用store.setProxy()并传递新的代理对象,然后使用:

nestedListObject.bindStore(store.load());

其中nestedListObject是您的嵌套列表。