在Ext js 4.2中可以有一个带有两个存储的组合框吗?

时间:2014-12-09 15:13:51

标签: extjs4 extjs4.1 extjs4.2 extjs-mvc

我必须进行实时搜索,并且在谷歌上花了几个小时后我决定在这里询问是否有人有想法如何在Ext JS中进行实时搜索(使用或不使用组合框)但是(三角部分)。我有2个数据集。一个数据集来自一个URL,第二个来自另一个URL。

我不知道如何启动或者如何在我的搜索框中键入内容以首先返回小数据集以及何时完全加载第二个数据集(更大)时发出请求。

当我在第一个区块中的搜索字段中输入“计算机”以向我显示与计算机相关的一些内容(第一个请求,其中包含少量数据)后,在第二个块中向我显示请求结束时与计算机相关的更多内容(第二次请求大量数据)。

我需要这个东西,因为在我的一个请求中我有超过10 k的产品,我不想让用户w8直到请求完成,并显示其他请求有更少的数据。直到第一个完成。

我忘了提到我想同时发出这两个请求并异步。

2 个答案:

答案 0 :(得分:1)

我对这种问题的解决方案是:

创建专门用于组合框内容的商店。

当两个“源”存储中的一个加载数据时,它们会将记录推送到组合存储中。 您还可以自动在记录之间进行引用,因此如果源存储1或2中的记录被删除,它也会在您的combostore中消失 - 因此在您的组合框中就像魔术一样!这是用于在另一个商店中推送数据的关键: http://serversideguy.com/2012/01/31/ext-js-4-merging-store-data/

最好的问候,希望有所帮助,如果您需要进一步了解此解决方案的信息,请写信。

答案 1 :(得分:0)

如果数据非常重要,您可以尝试在应用程序启动时加载内存。

在app的launch()上创建所需的商店,加载数据并在任何地方使用它。您也可以在控制器启动()上对控制器引用执行此操作,并根据需要对其进行粒化。

Ext.application({
    name: 'Blog',
    models: ['Post', 'Comment'],
    controllers: ['Posts', 'Comments'],

    launch: function() {
     Ext.define('User', {
         extend: 'Ext.data.Model',
         fields: [
             {name: 'firstName', type: 'string'},
             {name: 'lastName',  type: 'string'},
             {name: 'age',       type: 'int'},
             {name: 'eyeColor',  type: 'string'}
         ]
     });

     Ext.create('Ext.data.Store', {
         model: 'User',
         storeId: 'userStore',
         proxy: {
             type: 'ajax',
             url: '/users.json',
             reader: {
                 type: 'json',
                 root: 'users'
             }
         },
         autoLoad: true
     });    }

});