2014-02-08 39 views
0

我有EXTJS中的功能,我从控制器获取一个商店,然后加载它。extjs时间复杂度的Store.load方法

functionName: function (controller) { 
    return function() { 

     Ext.widget('callWindow'); 
     var variable= cotroller.getCallWindowPopup(); 
     controller.getAccountsStore().load({ 
      params: { 
       source_system_id: ssid 
      }, 
      callback: function (records) { 
       variable.loadRecord(records[0]); 
      } 
     }); 
    } 

} 

该帐户存储是一个json商店,可能有几千条记录。 哪个操作在这里很贵? getAccountsStore或加载方法。如果负载很贵,我该如何避免多次调用它?

回答

1

getAccountsStore是一个集合中的引用查找,它的直接。 load当然是昂贵的。它加载存储中的所有数据,将每条记录实例化为模型对象。

通常,您不需要多次拨打load,除非您的数据发生变化,并且您想刷新。

如果您使用分页存储,则可以减少加载时间。这只会将一页数据加载到商店中。这可能会或可能不会在您的情况下被接受。

+0

我有一种情况,我必须用两个不同的参数调用负载。我如何实现这一目标? – Arun

+0

全部取决于您加载的数据。如果它是相同的,并且例如回调更改,则不应加载多次。但是,如果数据不相同,例如如果过滤器发生变化,则无法在每次更改时加载。 –

+0

我添加了一个全局变量,并将其中的记录[0]存储在回调函数中,我在其他函数中使用它。因为,这是我想要在其他函数中访问而不调用昂贵的加载方法的对象。 – Arun