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 相关文章推荐
添加到收藏夹代码(兼容几乎所有的浏览器)
Jan 09 Javascript
在一个form用一个SUBMIT(或button)分别提交到两个处理表单页面的代码
Feb 15 Javascript
setAttribute 与 class冲突解决
Feb 17 Javascript
用模版生成HTML的的框架jquery.tmpl使用详解
Jan 07 Javascript
javascript实现瀑布流加载图片原理
Feb 02 Javascript
AngularJs基于角色的前端访问控制的实现
Nov 07 Javascript
探索Javascript中this的奥秘
Dec 11 Javascript
Angular1.x复杂指令实例详解
Mar 01 Javascript
防止页面url缓存中ajax中post请求的处理方法
Oct 10 Javascript
微信小程序--特定区域滚动到顶部时固定的方法
Apr 28 Javascript
jQuery Migrate 插件用法实例详解
May 22 jQuery
通过原生vue添加滚动加载更多功能
Nov 21 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简单的伪原创程序,配合商城采集用的
2010/10/12 PHP
Linux下安装PHP MSSQL扩展教程
2014/10/24 PHP
PHP使用Face++接口开发微信公众平台人脸识别系统的方法
2015/04/17 PHP
php socket通信简单实现
2016/11/18 PHP
PHP实现的多维数组排序算法分析
2018/02/10 PHP
PHP使用SMTP邮件服务器发送邮件示例
2018/08/28 PHP
Jquery 获取表单text,areatext,radio,checkbox,select值的代码
2009/11/12 Javascript
JS 的应用开发初探(mootools)
2009/12/19 Javascript
jQuery EasyUI 开源插件套装 完全替代ExtJS
2010/03/24 Javascript
javascript圆盘抽奖程序实现原理和完整代码例子
2014/06/03 Javascript
jquery.idTabs 选项卡使用示例代码
2014/09/03 Javascript
JavaScript字符串对象charAt方法入门实例(用于取得指定位置的字符)
2014/10/17 Javascript
js实现分享到随页面滚动而滑动效果的方法
2015/04/10 Javascript
用JavaScript实现PHP的urlencode与urldecode函数
2015/08/13 Javascript
JS常见问题之为什么点击弹出的i总是最后一个
2016/01/05 Javascript
详解升级react-router 4 踩坑指南
2017/08/14 Javascript
微信小程序使用video组件播放视频功能示例【附源码下载】
2017/12/08 Javascript
vue短信验证性能优化如何写入localstorage中
2018/04/25 Javascript
webpack4 处理SCSS的方法示例
2018/09/03 Javascript
在vue中使用防抖和节流,防止重复点击或重复上拉加载实例
2019/11/13 Javascript
js实现简单扫雷
2020/11/27 Javascript
Python实现的简单万年历例子分享
2014/04/25 Python
Python3读取UTF-8文件及统计文件行数的方法
2015/05/22 Python
详解python的webrtc库实现语音端点检测
2017/05/31 Python
Python 占位符的使用方法详解
2019/07/10 Python
Python 实现try重新执行
2019/12/21 Python
PyCharm 解决找不到新打开项目的窗口问题
2021/01/15 Python
Html5 Canvas动画基础碰撞检测的实现
2018/12/06 HTML / CSS
美国第一大药店连锁机构:Walgreens(沃尔格林)
2019/10/10 全球购物
弘扬雷锋精神活动演讲稿
2014/03/04 职场文书
2014年销售经理工作总结
2014/12/01 职场文书
解除劳动合同通知书范本
2015/04/16 职场文书
新年晚会开场白
2015/05/29 职场文书
解决redis sentinel 频繁主备切换的问题
2021/04/12 Redis
小程序实现筛子抽奖
2021/05/26 Javascript
浅谈JS的原型和原型链
2021/06/04 Javascript