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

前端之家收集整理的这篇文章主要介绍了ExtJs异步无法向外传值和赋值的完美解决办法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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


<div class="jb51code">
<pre class="brush:js;">
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]
});
});

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

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

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

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

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

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

@H_502_0@以上所述是小编给大家介绍的ExtJs异步无法向外传值和赋值的完美解决办法。编程之家 jb51.cc 收集整理的教程希望能对你有所帮助,如果觉得编程之家不错,可分享给好友!感谢支持

原文链接:https://www.f2er.com/js/38634.html

猜你在找的JavaScript相关文章