2013-03-27 49 views
6

我打开我的商店如下:EXTJS存储负载回调问题

store.load({ 
     params:{paramMap}, 
     callback : function(records, options, success) { 
      if (success) { 
       var form = formPanel.getForm(); 
       var jsonStr = Ext.JSON.encode(records[0].raw); 
       var jsonObj = Ext.JSON.decode(jsonStr); 
       form.loadRecord(jsonObj); 
      } 
     } 
    }); 

的事情是我只希望这回叫火首次商店被加载。我想在此之后删除它,这样当我重新加载或再次加载商店时,它不会再次调用此回调。

任何想法,我试着在选项配置中得到回调,但似乎并没有工作。

回答

14

不完全确定是什么问题。回调只会在商店加载回调时被调用。

store.load({callback:myCallback}); 
//callback will be called 
store.load(); 
//callback will not be called 

如果你想只是想做一些事情,你可能想使用一个单一设置为true的侦听器。听众而不是回叫是我的首选方式。

store.on('load', onStoreLoad, this, {single:true}); 

回调函数参数api与加载侦听器略有不同,请检查文档以查看。

+0

你是对的。我在商店里放置了一个beforeload监听器后意识到了。我实际上正在调用reload,它使用与包含我的回调的原始调用相同的参数。所以我把它切换到调用加载。谢谢 – codemonkeyww 2013-03-27 19:06:49

+0

您可能还需要在第一个调用中通过范围: store.load({callback:myCallback,scope:this}); – 2014-04-29 22:54:47