2012-10-18 56 views
2

我有一个Ext.Data.Store。我有一个函数,需要调用一次,当存储加载。只有一次。 起初,我这样做:Extjs问题与商店

function invokeMe() { 
alert("!"); 
} 

actionTemplateStore.on('load', function() { 
    invokeMe(); 
} 

但有一个问题ISIN此解决方案: 我真的需要一次invoce “invokeMe” - 函数

回答

1
actionTemplateStore.on('load', function() { 
    if (!actionTemplateStore.actionInvoked) { 
     invokeMe(); 
     actionTemplateStore.actionInvoked = true; 
    } 
} 

更新:如劳埃德提到的,你也可以使用{单:真正}选项。

actionTemplateStore.on('load', yourFunction, {single:true}); 
+0

谢谢!它的工作原理=) –

+0

太棒了,不要忘记注册! – mik

+0

当您不需要时,您正在添加属性和条件逻辑。事件监听器支持单个执行配置,如下所述。 – Lloyd

0

试试这个:

function invokeMe() { 
alert("!"); 
} 

actionTemplateStore.on('load',function() { 
    invokeMe(); 
},this,{single: true}); 

我们传入this对于范围和配置对象single: true,这使它只能执行一次。

你也可以这样做:

var onLoad = function(store) { 
    alert('!'); 
    store.un('load',onLoad); 
} 

actionTemplateStore.on('load',onLoad);