ExtJs异步无法向外传值和赋值的完美解决办法

 更新时间:2017年06月14日 08:55:40   作者:乐呵呵的小码农  
这篇文章主要介绍了ExtJs异步无法向外传值和赋值的完美解决办法,需要的朋友可以参考下

1、Ext.data.Store.load();方法是异步的,下面的方式获得的reCount始终是0,因为还没等后台的方法执行完就赋值了,此时store的record还没获得值。

var testStore = new Ext.data.GroupingStore({
   proxy : new Ext.data.HttpProxy({
      url : ''
   }),
   reader : new Ext.data.JsonReader({
      root : 'hstamcx',
      totalProperty : "results",
      fields : ["id","value"]
   })
});
Ext.onReady(function(){
     Ext.QuickTips.init();
     Ext.form.Field.prototype.msgTarget = 'side';
     testStore.load (); 
     var reCount = testStore.getCount();
     var port = new Ext.Viewport({
        layout : 'auto',
        frame : true,
        items : [winKey]
     });
});

2、如果想要对加载的值进行处理,必须将后续处理写在回调函数中。

Ext.onReady(function(){
     Ext.QuickTips.init();
     Ext.form.Field.prototype.msgTarget = 'side';
     testStore.load({
        callback : function(r, options, success) {
           var reCount = testStore.getCount();
        }
     });
     var port = new Ext.Viewport({
        layout : 'auto',
        frame : true,
        items : [winKey]
     });
});

此时可以获得reCount的值,并且callback : function(r, options, success)的r就是store加载查到的数据。

但依然存在问题:r的数据值只能在回调函数里面使用,在callback函数里既不能给外部的其他元素赋值,也没有办法将r数据传到外面去 

3、如果想在js页面向后台发送请求,并在外面使用后台返回的数据值,可以使用Ext.Ajax.request,并将请求方式设置成同步,接收数据的变量要定义在Ext.Ajax.request外面   

  var cancelMode;
     Ext.Ajax.request({
        url: '',
        method: 'post',
        sync:true, //同步请求
        success: function(response) {
           var response = Ext.util.JSON.decode(response.responseText);
           cancelMode = response.hstamcx[0].param_value;
        }
      });

此时就可以在外面使用Ext.Ajax.request的请求获得的数据了,比如alert(cancelMode );

后台代码示例:该示例是举个大概例子,并不是完整代码

public void getData(HttpServletResponse response){
      TestData td = TestDataDao.getTestdata();
      String message = "{name:" + td .getName()+ ",id:" + td.getId()+ "}";
      PrintWriter out=response.getWriter();
      out.write(message);
      out.flush();
   }

以上所述是小编给大家介绍的ExtJs异步无法向外传值和赋值的完美解决办法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • BootStrap栅格之间留空隙的解决方法

    BootStrap栅格之间留空隙的解决方法

    BootStrap栅格系统可以把我们的container容器划分为若干等分,如果想要每个部分之间留出一定的空隙,那么应该怎么解决,本文就来介绍一下
    2021-08-08
  • 将rmb数字位钱数转化为中文钱数的js函数

    将rmb数字位钱数转化为中文钱数的js函数

    用力将用户输入的钱数,中文化输出的函数代码,需要的朋友可以参考下。
    2010-07-07
  • JavaScript多线程详解

    JavaScript多线程详解

    虽然有越来越多的网站在应用AJAX技术进行开发,但是构建一个复杂的AJAX应用仍然是一个难题。接下来小编给大家介绍JavaScript多线程,需要的朋友可以参考下
    2015-08-08
  • 微信小程序使用前置摄像头拍照

    微信小程序使用前置摄像头拍照

    这篇文章主要为大家详细介绍了微信小程序使用前置摄像头拍照,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-10-10
  • javascript String split方法误操作

    javascript String split方法误操作

    在项目中需要分析将一个有规则的字符串分割成一个字符串数组。
    2009-09-09
  • JavaScript实现密码强度实时验证

    JavaScript实现密码强度实时验证

    这篇文章主要为大家详细介绍了JavaScript实现密码强度实时验证,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • javascript js 操作数组 增删改查的简单实现

    javascript js 操作数组 增删改查的简单实现

    下面小编就为大家带来一篇javascript js 操作数组 增删改查的简单实现。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • 限时抢购-倒计时的完整实例(分享)

    限时抢购-倒计时的完整实例(分享)

    下面小编就为大家带来一篇限时抢购-倒计时的完整实例(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • javascript数组输出的两种方式

    javascript数组输出的两种方式

    这篇文章主要介绍了javascript数组输出的两种方式,涉及javascript数组遍历的常用技巧,需要的朋友可以参考下
    2015-01-01
  • js 监控iframe URL的变化实例代码

    js 监控iframe URL的变化实例代码

    下面小编就为大家带来一篇js 监控iframe URL的变化实例代码。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07

最新评论