无法从 ExtJs 的回调中修改变量

Posted

技术标签:

【中文标题】无法从 ExtJs 的回调中修改变量【英文标题】:Unable to modify variable from within callback in ExtJs 【发布时间】:2016-03-27 15:37:15 【问题描述】:

如何在回调中在下面的代码中修改变量“updated”的值。

为什么变量 'updated' 没有以下列方式被修改(即每次调用函数时它都返回 false)?

updateData:function()

    var updated = false;
    var store = new Ext.getStore('MyStore');
    store.load(
        scope: this,
        callback: function(records, operation, success) 
         if(/*some condition*/)
            updated=true;   
          
        
    );

return  updated ;

【问题讨论】:

我猜这个函数每次都返回false,因为store.load()(我假设你使用远程代理)是异步调用,你只需定义update变量,调用load并返回update多变的。所以商店还没有加载,update 仍然是假的。 @SergeyNovikov 是的,你说得对,我正在使用远程代理 好吧,我描述了你的代码示例是如何工作的。 updated 变量更改为 true,但是当 callback 函数被触发时。 @SergeyNovikov 如何从上面的代码中返回 true,因为它仍然返回 false 你不能。在函数返回时,尚未触发回调。您可以使用调试器查看此行为。 【参考方案1】:

不确定你想用这段代码实现什么,但由于store.load() 是异步的(我假设你使用像ajax 之类的远程代理),所以当你返回updated 时不会加载存储,所以它仍然是错误的。

如果您只想在商店加载时执行某些操作,您可以在 callback 匿名函数中执行此操作(或将回调函数传递给您的 updateData 函数并在 callback 中调用它?)。

如果您想检查商店是否已加载,您可以为 ExtJS 5+ 调用 isLoaded() 或为 ExtJS 4 检查商店 lastOptions 属性(如果存在,则您的商店至少加载了一次)属性。

我没有看到您的updateData 函数的足够解决方案返回 true。

【讨论】:

以上是关于无法从 ExtJs 的回调中修改变量的主要内容,如果未能解决你的问题,请参考以下文章

html 在Svelte中修改变量

ExtJS.data.store.load 回调之外的空值

linux 中修改日志级别怎么修改

matlab中怎么修改变量的类型

extjs4 前台导出grid数据 生成excel,数据量大后台无法接收到数据

struts2页面中修改为啥select值不回显