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


Posted in Javascript onJune 14, 2017

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异步无法向外传值和赋值的完美解决办法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
ExtJS的FieldSet的column列布局
Nov 20 Javascript
JavaScript Event学习第九章 鼠标事件
Feb 08 Javascript
passwordStrength 基于jquery的密码强度检测代码使用介绍
Oct 08 Javascript
JavaScript AJAX之惰性载入函数
Aug 27 Javascript
jQuery匹配文档链接并添加class的方法
Jun 26 Javascript
jQuery+jsp下拉框联动获取本地数据的方法(附源码)
Dec 03 Javascript
Bootstrap在线电子商务网站实战项目5
Oct 14 Javascript
JointJS流程图的绘制方法
Dec 03 Javascript
JavaScript解析及序列化JSON的方法实例分析
Jan 04 Javascript
在Create React App中使用CSS Modules的方法示例
Jan 15 Javascript
laravel实现中文和英语互相切换的例子
Sep 30 Javascript
插件导致ECharts被全量引入的坑示例解析
Sep 23 Javascript
详解Vue爬坑之vuex初识
Jun 14 #Javascript
详解vue2.0的Element UI的表格table列时间戳格式化
Jun 13 #Javascript
微信小程序调用PHP后台接口 解析纯html文本
Jun 13 #Javascript
vue时间格式化实例代码
Jun 13 #Javascript
详解vue slot插槽的使用方法
Jun 13 #Javascript
详解Vue.js分发之作用域槽
Jun 13 #Javascript
Javascript实现从小到大的数组转换成二叉搜索树
Jun 13 #Javascript
You might like
php采集速度探究总结(原创)
2008/04/18 PHP
PHP批量生成图片缩略图的方法
2015/06/18 PHP
PHP之认识(二)关于Traits的用法详解
2019/04/11 PHP
php+iframe 实现上传文件功能示例
2020/03/04 PHP
JS类定义原型方法的两种实现的区别评论很多
2007/09/12 Javascript
JQuery AJAX实现目录浏览与编辑的代码
2008/10/21 Javascript
JS中动态添加事件(绑定事件)的代码
2011/01/09 Javascript
JQUERY 获取IFrame中对象及获取其父窗口中对象示例
2013/08/19 Javascript
深入分析Cookie的安全性问题
2015/03/01 Javascript
JavaScript中停止执行setInterval和setTimeout事件的方法
2015/05/14 Javascript
Nodejs爬虫进阶教程之异步并发控制
2016/02/15 NodeJs
js实现上一页下一页的效果【附代码】
2016/03/10 Javascript
通过网页查看JS源码中汉字显示乱码的解决方法
2016/10/26 Javascript
利用node.js写一个爬取知乎妹纸图的小爬虫
2017/05/03 Javascript
基于jQuery选择器之表单对象属性筛选选择器的实例
2017/09/19 jQuery
axios中cookie跨域及相关配置示例详解
2017/12/20 Javascript
layui当点击文本框时弹出选择框,显示选择内容的例子
2019/09/02 Javascript
vue项目创建步骤及路由router
2020/01/14 Javascript
js+css3实现炫酷时钟
2020/08/18 Javascript
Vue指令实现OutClick的示例
2020/11/16 Javascript
[03:04]2018年度DOTA2玩家最喜爱的主播-完美盛典
2018/12/16 DOTA
python使用arcpy.mapping模块批量出图
2017/03/06 Python
利用python获取当前日期前后N天或N月日期的方法示例
2017/07/30 Python
python中将字典形式的数据循环插入Excel
2018/01/16 Python
Python enumerate函数功能与用法示例
2019/03/01 Python
python 求某条线上特定x值或y值的点坐标方法
2019/07/09 Python
python实现简单银行管理系统
2019/10/25 Python
Ubuntu下Python+Flask分分钟搭建自己的服务器教程
2019/11/19 Python
Ubuntu权限不足无法创建文件夹解决方案
2020/11/14 Python
德国圣伯纳德草药屋:Kräuterhaus Sanct Bernhard(有中文站)
2018/08/05 全球购物
《猴子种树》教学反思
2014/02/14 职场文书
2015年物流客服工作总结
2015/07/27 职场文书
小学教师教育随笔
2015/08/14 职场文书
90行Python代码开发个人云盘应用
2021/04/20 Python
python实现自定义日志的具体方法
2021/05/28 Python
简单且有用的Python数据分析和机器学习代码
2021/07/02 Python