ExtJs異步無(wú)法向外傳值和賦值的完美解決辦法
1、Ext.data.Store.load();方法是異步的,下面的方式獲得的reCount始終是0,因?yàn)檫€沒(méi)等后臺(tái)的方法執(zhí)行完就賦值了,此時(shí)store的record還沒(méi)獲得值。
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、如果想要對(duì)加載的值進(jìn)行處理,必須將后續(xù)處理寫在回調(diào)函數(shù)中。
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] }); });
此時(shí)可以獲得reCount的值,并且callback : function(r, options, success)的r就是store加載查到的數(shù)據(jù)。
但依然存在問(wèn)題:r的數(shù)據(jù)值只能在回調(diào)函數(shù)里面使用,在callback函數(shù)里既不能給外部的其他元素賦值,也沒(méi)有辦法將r數(shù)據(jù)傳到外面去
3、如果想在js頁(yè)面向后臺(tái)發(fā)送請(qǐng)求,并在外面使用后臺(tái)返回的數(shù)據(jù)值,可以使用Ext.Ajax.request,并將請(qǐng)求方式設(shè)置成同步,接收數(shù)據(jù)的變量要定義在Ext.Ajax.request外面
var cancelMode; Ext.Ajax.request({ url: '', method: 'post', sync:true, //同步請(qǐng)求 success: function(response) { var response = Ext.util.JSON.decode(response.responseText); cancelMode = response.hstamcx[0].param_value; } });
此時(shí)就可以在外面使用Ext.Ajax.request的請(qǐng)求獲得的數(shù)據(jù)了,比如alert(cancelMode );
后臺(tái)代碼示例:該示例是舉個(gè)大概例子,并不是完整代碼
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異步無(wú)法向外傳值和賦值的完美解決辦法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
JavaScript中常見(jiàn)的繼承方式總結(jié)
這篇文章主要和大家詳細(xì)介紹了JavaScript中常見(jiàn)的幾種繼承方式,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)JavaScript有一定幫助,需要的小伙伴可以參考下面文章詳細(xì)內(nèi)容2022-11-11ElementUI的Dialog彈窗實(shí)現(xiàn)拖拽移動(dòng)功能示例代碼
這篇文章主要介紹了ElementUI的Dialog彈窗實(shí)現(xiàn)拖拽移動(dòng)功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07JS實(shí)現(xiàn)一個(gè)列表中包含上移下移刪除等功能
一個(gè)項(xiàng)目,包括了一個(gè)列表頁(yè)其中包括在列表中實(shí)現(xiàn)上移,下移,刪除等功能,為了用戶體驗(yàn),操作均使用JS實(shí)現(xiàn)2014-09-09基于JS抓取某高校附近共享單車位置 使用web方式展示位置變化代碼實(shí)例
這篇文章主要介紹了基于JS抓取某高校附近共享單車位置 使用web方式展示位置變化代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08Extjs 點(diǎn)擊復(fù)選框在表格中增加相關(guān)信息行
這篇文章主要介紹了Extjs 點(diǎn)擊復(fù)選框在表格中增加相關(guān)信息行 的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07javascript Canvas動(dòng)態(tài)粒子連線
這篇文章主要為大家詳細(xì)介紹了javascript Canvas動(dòng)態(tài)粒子連線,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-01-01